qt dwm 窗口标题栏右键菜单
在Qt中实现窗口标题栏右键菜单需要以下步骤:
-
为窗口添加一个事件过滤器,以便捕获鼠标右键事件。
-
在事件过滤器中处理鼠标右键事件,并创建一个QMenu作为右键菜单。
-
将需要的菜单项添加到QMenu中,并设置它们的响应函数。
-
在窗口的标题栏上注册右键菜单,以便在鼠标右键点击标题栏时弹出菜单。
以下是一个简单的示例代码,展示了如何在Qt中实现窗口标题栏右键菜单:
#include <QtWidgets>
class MainWindow : public QMainWindow
{
public:
MainWindow() {
setWindowTitle("Window Title");
// 为窗口添加事件过滤器
installEventFilter(this);
}
protected:
bool eventFilter(QObject *obj, QEvent *event) {
if (event->type() == QEvent::MouseButtonPress) {
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
if (mouseEvent->button() == Qt::RightButton) {
// 右键点击标题栏时弹出菜单
if (mouseEvent->pos().y() <= frameGeometry().top()) {
QMenu menu(this);
QAction *action1 = menu.addAction("Action 1");
connect(action1, &QAction::triggered, this, &MainWindow::onAction1);
QAction *action2 = menu.addAction("Action 2");
connect(action2, &QAction::triggered, this, &MainWindow::onAction2);
menu.exec(mouseEvent->globalPos());
return true;
}
}
}
return QMainWindow::eventFilter(obj, event);
}
private:
void onAction1() {
// 处理 Action 1
}
void onAction2() {
// 处理 Action 2
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow window;
window.show();
return app.exec();
}
``
原文地址: https://www.cveoy.top/t/topic/deUs 著作权归作者所有。请勿转载和采集!