- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 PyQt4
,但这足够通用,可以仅适用于 QT
。
我有一系列从左到右填充的 QComboBoxes(即选择最左边的一个项目将填充下一个项目。选择该项目中的一个项目将填充下一个项目,等等上)
我很难在所有情况下触发信号(即,无论当前索引是否更改,也无论该项目是由用户设置还是以编程方式设置)。
更多细节:
每当选择一个项目时,我都会依靠第一个 QCombobox
的信号来触发,以便我可以填充 GUI 中的下一个 QCombobox
。然后,我依靠 QCombobox
发出信号,以便我可以填充下一个信号。等等。
我想根据用户上次与 gui 的交互在每个 QCombobox 中预先选择一个项目。
每个 QCombobox
有一个独特的函数,负责填充和预选择该 QCombobox
。代码看起来像这样:
comboBox1.blockSignals(True)
comboBox1.clear()
comboBox1.addItems(sorted(itemList))
comboBox1.blockSignals(False)
comboBox1.setCurrentIndex(intLastSavedState1)
其中 intLastSavedState1
是一个整数,派生自用户上次使用应用程序时最后选择的文本。我希望这个函数的最后一行会触发一个信号,导致下一个组合框的函数加载并预选一个项目 (comboBox2
)。然后,该操作将导致下一个组合框的功能激活,并且它会级联到下一个和下一个。但它并不适用于所有情况。
我尝试了两个版本的信号:
self.connect(comboBox1, QtCore.SIGNAL("currentIndexChanged(const QString&)"), self.load_comboBox2)
和
self.connect(comboBox1, QtCore.SIGNAL("activated(const QString&)"), self.load_comboBox2)
在第一种情况下,仅当 intLastSavedState1
与组合框中当前选择的内容不同时,信号才会触发。如果用户最后从该列表中选择了项目 0,这会导致问题。在这种情况下,QT
无法识别我的脚本,将当前索引设置为 0 作为更改(因为加载框后,它似乎认为它已经在索引 0 上),因此信号确实不火。
在第二种情况下,无论当前在组合框中选择什么,信号都会触发......但前提是由用户激活。当我的脚本尝试以编程方式设置当前索引时,它不会触发。
这似乎是我关于信号的唯一两个选择。那么...是否有另一种方法可以在 QCombobox
中预先选择项目,每次都会触发一个信号?
最佳答案
嗯...有时只是提出问题的行为就可以让您得到(部分)答案。
我有一个解决方法,但我仍然有兴趣听听是否有人有更好的想法。
我现在在加载后立即以编程方式将 QCombobox
的索引设置为 -1
。然后,当我根据用户的历史记录以编程方式设置实际索引时,它将始终被视为更改(即它永远不会是 -1)并且信号将触发
使用:currentIndexChanged(const QString&)
所以我的代码现在看起来像这样:
comboBox1.blockSignals(True)
comboBox1.clear()
comboBox1.addItems(sorted(itemList))
comboBox1.setCurrentIndex(-1)
comboBox1.blockSignals(False)
comboBox1.setCurrentIndex(intLastSavedState1)
我的信号如下所示:
self.connect(comboBox1, QtCore.SIGNAL("currentIndexChanged(const QString&)"), self.load_comboBox2)
这个功能...有人有更好的主意吗?
谢谢阿吉安。
关于qt - PyQt(或简称 QT)。如何让 QComboBox 在设置值(即使未更改)时触发信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3965093/
我使用 Qt Designer 来构建我的 UI 布局。在布局上,我有一个名为 cb_fac_cd 的组合框.在我的代码中,我有一个函数可以根据我尝试构建的列表自动构建一个组合框。我在数据库中定义了很
我正在创建带有复选框的 QComboBox。如何防止鼠标单击时 View 折叠?我希望能够设置复选框,但是每次单击项目时 - QComboBox 的下拉菜单都会折叠起来。 注意:目前我正在调试 Qt
我为 QComboBox 创建了模型: #ifndef QCOMBOBOXMODEL_H #define QCOMBOBOXMODEL_H #include class QComboBoxModel
我如何实现 QComboBox允许您从树结构中进行选择,类似于 QTreeView ? 最佳答案 我在 developer.nokia.com( Part 1 , Part 2 )上使用两部分配方想出
当 QComboBox 的 currentIndex 更改时,我需要使用 currentIndex+1 调用函数。今天早上我在语法上苦苦挣扎: // call function readTables(
我正在 PyQt 中开发一个应用程序,该应用程序采用对象字典,并允许您实时绘制从机器人流式传输的变量。我正在努力启用此功能的一件事是下拉菜单。不幸的是,我们有几百个变量,所以我的 PyQt Combo
我想把 QComboBox变成 QStandardItem用于 QStandardItemModel .我一直在环顾四周,我找不到答案,有什么想法吗? 最佳答案 您不存储 QComboBox在 QSt
我的 ui 上有一个 QComboBox 并像这样设置模型: QStringListModel* model = new QStringListModel; QStringList stringlis
我正在尝试在 QT5 中设置组合框的样式。我使用 QT Creator 进行布局并在启动时加载应用程序范围的样式表。 我与组合框相关的CSS如下: QComboBox { color:whit
我在输入表单上有一个可编辑组合框,其背景在接收焦点时必须更改。以下代码适用于 QLineEdit,但对 QComboBox 没有影响。 QLineEdit, QComboBox { backgroun
我想知道 QComboBox 中有多少像素需要这个项目: 红色 - 复选框 绿色 - 复选框结尾和文本开头之间的距离 蓝色 - 边框末端和复选框开始之间的距离 在 QStyle 的文档中,我找到了两种
从“正常”QCombobox开始 我想要一个 QCombobox,它仅在展开时显示图标,但在折叠时不显示。 我找到了类似问题的几个答案,但它们都显示了更复杂情况的代码,而我还没有设法提取其核心。 我见
我工作的应用程序 GUI 需要一个组合框供用户选择项目。当应用程序启动时,组合框将显示类似于“请选择”的提示文本,而不是显示组合框的第一项。我在 http://doc.qt.io/qt-5/qcomb
我想设计我的 QComboBox与下拉项目的 margin 。这是现在的样子: 我想要这样的东西: 我试过 QComboBox QAbstractItemView::item { margin
这是我的代码片段: self.cursor.execute("MATCH (n:Person) RETURN n.firstname, n.lastname") for i in self.curso
通常我会通过说将项目添加到 QCombobox: QCombobox cbb; cbb.addItem("Hello"); 但是如果我尝试这个,我会得到一个错误: QComboBox cbb; QSt
我发现在最新的 Qt 版本中(目前我使用的是 5.4.1,但在 5.2 中是一样的)如果我将几个项目添加到 QComboBox 并将鼠标光标定位在特定位置,它会自行滚动,这确实是烦人……我想。 我在
当 QComboBox 的下拉列表打开时,键盘输入被用作(不是特别聪明的)搜索元素的方式。我想禁用它并将键盘事件的处理传播到父小部件。怎么办呢?我已经尝试在子类中重新实现 keyPressEvent
我有一个数据库,其中包含两种类型的同一事物。假设我有动物,然后两种类型是鸟类和鱼类。我想要一个将两者组合在一起的组合框。所以基本上你可以选择任何动物,一些鸟或一些鱼。 在组合框中,我想显示数据库中所有
我已将 QComboBox 子类化以根据特殊需要对其进行自定义。该子类用于在 QtDesigner 的 ui 文件中提升 QComboBoxes。一切正常,除了当我在插槽中放置断点时,程序不会在断点处
我是一名优秀的程序员,十分优秀!