QMENU 菜单自身同步的一个小问题,能无法解决

QMENU 菜单自身同步的一个小问题,能无法解决,第1张

那个lastbmpini是qmenu记录本次用qmenu切换壁纸后的壁纸文件,它不会影响qmenu切换壁纸功能。你的切换失败应当是你设置上的失误?还有,切换壁纸是要改注册表才行,确定你当前的用户有写注册表的权限。 查看原帖>>

这个还是比较简单的

void CMainFrame::MenuChange()

{

//CBitmap pMenuBitmap; //需要定义为成员变量

pMenuBitmap = new CBitmap;

pMenuBitmap->LoadBitmap(IDB_BITMAP_right);//需要加载的图标资源

CMenu pWcqMenu;

pWcqMenu = GetMenu()->GetSubMenu(0);//子菜单,0代表主菜单的第一个子菜单

pWcqMenu->SetMenuItemBitmaps(1,//第几个功能,从0开始 MF_BYPOSITION| MF_STRING| MF_ENABLED,//属性 pMenuBitmap,

pMenuBitmap

);

}

上面的函数 在主框架int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中调用即可

QMenu pMenu = new QMenu(this);

    QAction pTest1 = new QAction(QIcon("copyico"),"复制", this);

    QAction pTest2 = new QAction("删除", this);

    QAction pTest3 = new QAction("标记", this);

    QAction pTest4 = new QAction("取消标记", this);

  //把QAction对象添加到菜单上

    pMenu->addAction(pTest1);

    pMenu->addAction(pTest2);

    pMenu->addAction(pTest3);

    pMenu->addAction(pTest4);

    //添加分隔线

    //pMenu->addSeparator();

    //设置点击后发送的数据

  // pTest1->setData(1);

    //连接鼠标右键点击信号

    connect(pTest1, &QAction::triggered, this, &sub::ClickCopy);

    connect(pTest2, &QAction::triggered, this, &sub::ClickDel);

    connect(pTest3, &QAction::triggered, this, &sub::Clicktink);

    connect(pTest4, &QAction::triggered, this, &sub::ClickDeltink);

    //在鼠标右键点击的地方显示菜单

    pMenu->exec(cursor()pos());

    //释放内存,若此处不手动释放,则必须等到程序结束时才都能释放

    QList list = pMenu->actions();

    foreach (QAction pAction, list)

        delete pAction;

    delete pMenu;

Qt 56样例:

MainWindowh:

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

#include <QObject>

#include <QMainWindow>

class MainWindow : public QMainWindow

{

    Q_OBJECT

public:

    MainWindow(QWidget parent = 0);

    ~MainWindow();

private:

    void initialAction();

    void initialMenuBar();

    void initialToolBar();

    void initialStatusBar();

    void open();

    QAction openAction;

};

#endif // MAINWINDOW_HMainWindowcpp:#include <QAction>

#include <QMenuBar>

#include <QMessageBox>

#include <QStatusBar>

#include <QToolBar>

#include "MainWindowh"

MainWindow::MainWindow(QWidget parent) :

    QMainWindow(parent)

{

    setWindowTitle(tr("Main Window"));

    initialAction();

    initialMenuBar();

    initialToolBar();

    initialStatusBar();

}

MainWindow::~MainWindow()

{

}

void MainWindow::initialAction()

{

    openAction = new QAction(QIcon(":/images/doc-open"), QObject::tr("&Open"), this);

    openAction->setShortcuts(QKeySequence::Open);

    connect(openAction, &QAction::triggered, this, &MainWindow::open);

}

void MainWindow::initialMenuBar()

{

    QMenu file = menuBar()->addMenu(QObject::tr("&File"));

    file->addAction(openAction);

}

void MainWindow::initialToolBar()

{

    QToolBar toolBar = addToolBar(QObject::tr("&File"));

    toolBar->addAction(openAction);

}

void MainWindow::initialStatusBar()

{

    statusBar();

    openAction->setStatusTip(QObject::tr("Open an existing file"));

}

void MainWindow::open()

{

    QMessageBox::information(this, tr("Information"), tr("Open"));

}

只要读成Q

MENU就可以了,拼音标注读音为“KIU

MEN

NIU”。

Q一般是CUTE缩写,意思为聪明或者可爱。

MENU是菜单的意思。

结合起来就是:智能菜单。

我想可能是网吧里用的软件吧?

按照你所说,你只是想要主菜单点击时,就会调用一段程序吧,那么你可以不用action,如果说你这action在别的地方没用的话。

如上所说,你应该重写QMenu(也就是你的主菜单)的mousePressEvent事件,也就是鼠标按下事件,然后在这个事件调用你想要的方法,或者直接在这个事件里面执行你的 *** 作。

如果不懂,百度“Qt事件”,比如Qt鼠标单击事件什么的,看看如何重写相关事件。

以上就是关于QMENU 菜单自身同步的一个小问题,能无法解决全部的内容,包括:QMENU 菜单自身同步的一个小问题,能无法解决、怎么给菜单项加上图标,在MFC中,谢谢啦~、QT 右键菜单等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9520083.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存