提取QToolButton Widget的上角位置

Posted

技术标签:

【中文标题】提取QToolButton Widget的上角位置【英文标题】:Extract the top corner position of QToolButton Widget 【发布时间】:2014-05-24 06:08:52 【问题描述】:

我正在尝试提取工具按钮的坐标。所以当有一个弹出窗口时,它总是从小部件的左上角开始。我正在做这样的事情

menu_something->popup(mapToGlobal(ui.toolButton->pos()));

但是,在工具按钮附近没有显示菜单。有什么建议吗?

【问题讨论】:

将弹出窗口父级设置为工具按钮是否足够? 不,我想对齐它们。默认情况下,它们将是下拉菜单。我希望他们侧身 我们用这个(见我的回答)作为推送组合框。对话框总是在按钮上方打开。 【参考方案1】:

使用 QDialog 运行(可推送和可设置样式的 ComboBox 对话框): 在 QToolButton 的子类中调用 this 获取坐标

QPoint mypoint = QWidget::mapToGlobal(QPoint(0,0));

并使用

QRect myrect;
myrect.setCoords(topleft.x(),topleft.y(),topleft.x()+width,10);
YourPopupDialog.setGeomentry(myrect);
YourPopupDialog.setFocus();
YourPopupDialog.show();

将对话框定位在按钮上。

编辑以与在连接到 clicked() 的插槽中运行的 QMenu 一起使用:

QMenu menu;
menu.addAction("Text 0");
menu.addAction("Text 1");

menu.exec(ui->toolButtonMenuButton->mapToGlobal(QPoint(0,0)));

【讨论】:

mypoint 在全局坐标中位于左上角,编辑为显示工具按钮而不是 qwidget。我们确实有一个按钮的子类,因此 0,0 在左上角 我建议创建一个 QToolButton 的子类来生成一个名为 dropdownbutton 的独立小部件。新的小部件可以包含一个按钮列表,这些按钮是需要在弹出对话框中绘制的元素。 QMenu 没有 setGeometry。 我们为此使用自定义 QDialog。从未尝试过使用 QMenu,因为我们运行的是全触控应用程序,而这实际上是触控组合框的一部分。 QMenu 继承了 setGeometry(const QRect &)

以上是关于提取QToolButton Widget的上角位置的主要内容,如果未能解决你的问题,请参考以下文章

QPushButton 设置图片的位置

在 Flutter 测试中获取小部件的位置?

Qt中有既可显示图像又可显示文字的widget吗

Qt动画效果展示(文艺IT男)

QToolButton按钮

QToolButton - 图标顶部的文本