Qt工作笔记-QMenu::exec中使用QWidget::mapToGlobal()与QCursor::pos()之间的些许差异
生活随笔
收集整理的這篇文章主要介紹了
Qt工作笔记-QMenu::exec中使用QWidget::mapToGlobal()与QCursor::pos()之间的些许差异
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
源碼如下:
widget.h
#ifndef WIDGET_H #define WIDGET_H#include <QWidget>namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();protected slots:void onContextMenu(const QPoint &pt);private:Ui::Widget *ui; };#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(); }widget.cpp
#include "widget.h" #include "ui_widget.h" #include <QDebug> #include <QMenu> #include <QCursor>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu);connect(ui->listWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onContextMenu(QPoint))); }Widget::~Widget() {delete ui; }void Widget::onContextMenu(const QPoint &pt) {qDebug()<< "QCursor::pos():" << QCursor::pos();qDebug()<< "pt:" << pt;qDebug()<< "ui->listWidget->mapToGlobal(pt):" << ui->listWidget->mapToGlobal(pt);qDebug()<< "----------**********----------";QMenu menu;menu.addAction("12345");menu.addAction("67890");//menu.exec(QCursor::pos());menu.exec(ui->listWidget->mapToGlobal(pt)); }打印的數(shù)據(jù)如下:
視覺(jué)上的效果如下:
使用ui->listWidget->mapToGlobal(pt)
使用QCursor::pos()的效果如下:
?
差別還是很大的,是不是!!
總結(jié)
以上是生活随笔為你收集整理的Qt工作笔记-QMenu::exec中使用QWidget::mapToGlobal()与QCursor::pos()之间的些许差异的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Qt工作笔记-对qmake的认识【两篇转
- 下一篇: Linux工作笔记-CentOS 调整