QT自定义对话框显示window菜单栏图标

本文介绍了如何在Qt应用中使用自定义对话框构造函数,设置了窗口标题和图标,并创建了一个名为_loginDialog的子窗口,其父窗口为nullptr,关联了sqlDatabase。
#自定义对话框构造函数
this->setWindowTitle(WINDOW_TITLE);
this->setWindowIcon(QIcon(":/resource/favicon.ico"));

#MainWindow构造函数
_loginDialog = new loginDialog(sqlDatabase, nullptr); //parent 填 nullptr

Qt 中,可以通过继承 `QTextBrowser` 并重写其 `contextMenuEvent` 方法来实现向 QTextBrowser 的右键菜单中添加自定义项。以下是一个详细的实现示例: 1. **创建自定义QTextBrowser 子类** 在该子类中,重写 `contextMenuEvent` 方法以添加新的菜单项。 ```cpp #include <QTextBrowser> #include <QMenu> #include <QAction> #include <QDebug> class CustomTextBrowser : public QTextBrowser { Q_OBJECT public: CustomTextBrowser(QWidget *parent = nullptr) : QTextBrowser(parent) {} protected: void contextMenuEvent(QContextMenuEvent *event) override { QMenu menu(this); // 添加默认的 QTextBrowser 菜单项 menu.addAction(copyAction()); // 复制操作 menu.addAction(selectAllAction()); // 全选操作 // 添加自定义菜单项 QAction *customAction = menu.addAction("Custom Action"); // 执行菜单并获取用户选择 QAction *selectedAction = menu.exec(event->globalPos()); // 根据用户选择执行相应操作 if (selectedAction == customAction) { qDebug() << "Custom action triggered!"; // 可以在此处添加自定义逻辑 } else { QTextBrowser::contextMenuEvent(event); // 调用基类处理其他默认操作 } } }; ``` 2. **使用自定义的 `CustomTextBrowser`** 在主窗口对话框中使用该自定义的 `CustomTextBrowser` 替代标准的 `QTextBrowser`。 ```cpp #include <QApplication> #include <QMainWindow> int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow window; CustomTextBrowser *textBrowser = new CustomTextBrowser(&window); window.setCentralWidget(textBrowser); window.resize(600, 400); window.show(); return app.exec(); } ``` 3. **进一步定制** - 可以通过 `QAction` 设置图标、快捷键等属性。 - 如果需要动态添加或移除菜单项,可以将 `QAction` 对象存储为类成员,并在需要时通过 `menu.removeAction()` 进行管理。 - 可以使用 `QSignalMapper` 或 C++11 lambda 表达式来连接更复杂的槽函数逻辑。 通过这种方式,可以在 QTextBrowser 的右键菜单中灵活地添加自定义功能,同时保留原有的标准操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值