Qt工作笔记-自定义菜单(右键菜单)
生活随笔
收集整理的這篇文章主要介紹了
Qt工作笔记-自定义菜单(右键菜单)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
所以,只要重寫createWIdget()這個函數就闊以了!
把寫好的界面放到這個parent里面不就闊以了!
寫好的界面如下:
?
運行截圖如下:
?
?
源碼如下:
mypopwidget.h
#ifndef MYPOPWIDGET_H #define MYPOPWIDGET_H#include <QWidget>namespace Ui { class MyPopWidget; }class MyPopWidget : public QWidget {Q_OBJECTpublic:explicit MyPopWidget(QWidget *parent = 0);~MyPopWidget();private:Ui::MyPopWidget *ui; };#endif // MYPOPWIDGET_Hmywidgetaction.h
#ifndef MYWIDGETACTION_H #define MYWIDGETACTION_H#include <QObject> #include <QWidgetAction>class MyWidgetAction : public QWidgetAction {Q_OBJECT public:explicit MyWidgetAction(QWidget *parent = 0);protected:QWidget *createWidget(QWidget *parent); };#endif // MYWIDGETACTION_Hwidget.h
#ifndef WIDGET_H #define WIDGET_H#include <QWidget> class QMenu;namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();public slots:void onContextMenu(const QPoint &pt);private:Ui::Widget *ui;QMenu *m_menu; };#endif // WIDGET_Hmain.cpp
#include "widget.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }mypopwidget.cpp
#include "mypopwidget.h" #include "ui_mypopwidget.h"MyPopWidget::MyPopWidget(QWidget *parent) :QWidget(parent),ui(new Ui::MyPopWidget) {ui->setupUi(this); }MyPopWidget::~MyPopWidget() {delete ui; }mywidgetaction.cpp
#include "mywidgetaction.h" #include "mypopwidget.h"MyWidgetAction::MyWidgetAction(QWidget *parent): QWidgetAction(parent) {}QWidget *MyWidgetAction::createWidget(QWidget *parent) {MyPopWidget *myPopWidget=new MyPopWidget(parent);return myPopWidget; }widget.cpp
#include "widget.h" #include "ui_widget.h" #include <QMenu> #include <QDebug> #include <QPoint> #include "mywidgetaction.h" #include <QPushButton>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);ui->listView->setContextMenuPolicy(Qt::CustomContextMenu);connect(ui->listView,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(onContextMenu(QPoint))); }Widget::~Widget() {delete ui; }void Widget::onContextMenu(const QPoint &pt) {m_menu=new QMenu(this);MyWidgetAction *widgetAction=new MyWidgetAction(m_menu);m_menu->addAction("傳統的-第一個右鍵");m_menu->addAction(widgetAction);m_menu->exec(ui->listView->mapToGlobal(pt)); }?
總結
以上是生活随笔為你收集整理的Qt工作笔记-自定义菜单(右键菜单)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux学习笔记-配置SAMBA服务
- 下一篇: Qt文档阅读笔记-qRegisterMe