- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已将 QMenu 附加到 QToolButton,但菜单未正确反射(reflect)。
我正在通过读取 .txt
文件来填充我的 QMenu。菜单在第一次运行时显示正确的项目,但如果我在 .txt 文件中进行更改并重新单击按钮,QMenu 仍会在第一次运行时显示该项目。
补充一下,似乎clicked
信号只被调用一次?
class MyWin(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MyWin, self).__init__()
central_widget = QtGui.QWidget()
self.setCentralWidget(central_widget)
vlay = QtGui.QVBoxLayout(central_widget)
hlay = QtGui.QHBoxLayout()
vlay.addLayout(hlay)
vlay.addStretch()
self.add_button = QtGui.QToolButton()
self.tab_bar = QtGui.QTabBar(self)
self.add_button.setIcon(QtGui.QIcon('add.png'))
self.add_button.clicked.connect(self.set_menu)
#self.add_button.setMenu(self.set_menu())
#self.add_button.setPopupMode(QtGui.QToolButton.InstantPopup)
self.tab_bar.setTabButton(
0,
QtGui.QTabBar.ButtonPosition.RightSide,
self.add_button
)
hlay.addWidget(self.add_button)
hlay.addWidget(self.tab_bar)
def set_menu(self):
with open('/Desktop/item_file.txt') as f:
menu_options = f.read().splitlines()
print menu_options
qmenu = QtGui.QMenu(self.add_button)
for opt in menu_options:
qmenu.addAction(opt, partial(self.set_new_tab, opt))
self.add_button.setMenu(qmenu)
self.add_button.setPopupMode(QtGui.QToolButton.InstantPopup)
def set_new_tab(self, opt):
self.tab_bar.addTab(opt)
最佳答案
当在QPushButton
中建立菜单时,mousePressEvent
事件不再到达QPushButton
,而是被QMenu拦截
因此不会发出点击信号。
一种解决方案是默认设置 QMenu,并使用 aboutToShow
信号调用 set_menu 以添加 QAction
。
from functools import partial
from PyQt4 import QtCore, QtGui
class MyWin(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MyWin, self).__init__()
central_widget = QtGui.QWidget()
self.setCentralWidget(central_widget)
vlay = QtGui.QVBoxLayout(central_widget)
hlay = QtGui.QHBoxLayout()
vlay.addLayout(hlay)
vlay.addStretch()
self.add_button = QtGui.QToolButton()
self.tab_bar = QtGui.QTabBar(self)
self.add_button.setIcon(QtGui.QIcon('add.png'))
self.qmenu = QtGui.QMenu(self.add_button)
self.add_button.setMenu(self.qmenu)
self.add_button.setPopupMode(QtGui.QToolButton.InstantPopup)
self.qmenu.aboutToShow.connect(self.set_menu)
self.tab_bar.setTabButton(
0,
QtGui.QTabBar.ButtonPosition.RightSide,
self.add_button
)
hlay.addWidget(self.add_button)
hlay.addWidget(self.tab_bar)
@QtCore.pyqtSlot()
def set_menu(self):
with open('/Desktop/item_file.txt') as f:
menu_options = f.read().splitlines()
self.qmenu.clear()
for opt in menu_options:
self.qmenu.addAction(opt, partial(self.set_new_tab, opt))
def set_new_tab(self, opt):
self.tab_bar.addTab(opt)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
w = MyWin()
w.show()
sys.exit(app.exec_())
关于python - QToolButton 单击信号仅调用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53892516/
当焦点出现在 QToolButton 上时,如何调整 QToolButton 的大小。我有 5 个 QToolButton,当焦点出现在第二个 QToolButton 上时,它的大小应该会自动增加。怎
我已将 QMenu 附加到 QToolButton,但菜单未正确反射(reflect)。 我正在通过读取 .txt 文件来填充我的 QMenu。菜单在第一次运行时显示正确的项目,但如果我在 .txt
我有一个 QToolButton。我想要文字和图标在上面。我通过 setToolButtonStyle(Qt::ToolButtonTextBesideIcon) 设置按钮样式。 但图标和文字彼此如此
我有一个 display.cpp 类,它有一个应该开始游戏的 QToolButton“开始”。我还有一个 singleton controller.cpp 类,它创建一个 display.cpp 对象
我有一个继承自 QWidget 的名为 Titlebar 的类。以下代码进入 Titlebar 类的构造函数: m_queueBtn = new QToolButton; m_serverToolBa
我试图做一个简单的设计来选择一种颜色,我正在使用 QToolButton 打开 QColorDialog。我的问题是我希望 QToolButton 具有选定的颜色,但我只成功设置了背景颜色,这不是我想
我正在尝试以编程方式使 QToolButton 在获得焦点时突出显示。我希望它像鼠标悬停选中时一样突出显示。这可能吗? 谢谢! 最佳答案 不确定您对样式表的熟悉程度,但这应该可以帮助您入门: QPus
如果我点击 QToolButton 按钮的箭头部分,会发出什么信号?单击的信号在我单击的任何地方发出,但我只需要在单击指定部分时检测。 最佳答案 你要做的就是拦截menu的aboutToShow信号,
当使用带有QToolButton的菜单时,菜单显示在按钮的正下方。有没有一种方法可以在按钮的左侧/右侧显示菜单? 最佳答案 该位置在[Qt安装目录]/src/gui/widgets/qtoolbutt
我正在使用多个 QToolButton s 自定义 QGridLayout小部件。这些按钮被设置为根据指定的默认 QAction 显示图标 + 文本。唯一的问题是内容(图标 + 文本)始终左对齐。 内
我想制作一个QToolButton,其中文本位于其图标的左侧。我尝试查找相关信息,并尝试了以下方法: button->setToolButtonStyle(Qt::ToolButtonTextBesi
我这里有两种不同的布局,一种是 QToolButton。我的目标是在单击该按钮时在两个布局之间转移该按钮。我认为这段代码可以工作, 片段: void DominionLinux::on_toolBut
我的代码片段如下所示: nextPageBtn = new QToolButton(); nextPageBtn->setSizePolicy(QSizePolicy::Expanding, QSiz
我想在QToolButton 中使用HTML 格式。例如在这张图片中,我应该在“Sara”和“Online”中创建QToolButton。 这是我的代码: viewControl=new QToolB
这是此 posting 的后续问题. 我正在尝试一种方法,在该方法中,我将 QToolButton 子类化并覆盖绘制事件,以便首先绘制一个红色矩形,然后在该矩形的顶部绘制文本。 我的代码大部分都在工作
我创建了一个简单的 10x10 黑框并将其添加到 QToolButton 中,如下所示: QIcon minIcon; minIcon.addFile("c:/tmp/black10x10.png")
我正在为 Mac OS X 开发 Qt 应用程序。问题是当我创建 QToolButton 时它会出现一些轮廓。 http://i.stack.imgur.com/vqtP9.png 我使用下一个样式表
我有一个 QToolButton,其中的文本使用 toolButton->setText(....)。但是,呈现按钮时文本会被截断。我尝试使用 resize() 和 setFixedSize 增加按钮
在 PyQt4 中,我有一个主窗口,单击设置按钮时将打开设置对话框 from PyQt4 import QtCore, QtGui import ui_Design, ui_Settings_Desi
我用我的 qt 设计器创建了一个 ToolButton,我试图将它连接到一个插槽。这是我写的 connect(ui->toolButton_addfiles, SIGNAL(triggered()),
我是一名优秀的程序员,十分优秀!