QT4中的单选按钮和显示控件
我有一个用旧式文本界面的脚本:我想用Python替换我的脚本代码,并使用qt designer工具和pyside创建一个图形用户界面。
我已经能够添加一个菜单栏、一个标签页和一些单选按钮。
当用户选择一个单选按钮时,我想在一个文本框里显示该选择的简要说明;当用户选择另一个单选按钮时,文本框里应该出现不同的说明,依此类推。
我有几个问题:
- 我应该用什么控件作为文本框?我在考虑用文本浏览器作为显示控件,但不太确定。用标签控件?还是用文本编辑控件?
- 当我把单选按钮连接到文本浏览器时,我能看到一些有趣的选项,比如insertHtml或insertPlainText,但一旦我选择了单选按钮的clicked()信号,这些选项就消失了,我甚至找不到它们了。
- 我也尝试把一个按钮和标签控件连接起来,但我找不到任何setText的选项。看文档我知道setText是存在的,但我在我的代码里无法使用它。
谢谢你们的任何支持。
2 个回答
0
在按钮点击后使用setText:
void myclass::on_mybutton_click()
{
ui->mylabel->setText("My awesome text");
}
补充:这个答案是用C++写的,不过你可以很容易地把它转换成Python。这样你就能看到结构是怎样的。
0
Qt有几种内置的方式可以向用户展示帮助信息,所以在自己动手做之前,建议你先考虑一下这些现成的选项:
- 如果你想给用户一个简单的提示,告诉他们某个界面元素是什么,可以使用工具提示。
- 如果你需要稍微长一点的提示,来解释某个界面元素能做什么,可以使用状态提示。这种提示通常用于菜单项和工具栏按钮。
- 如果你需要提供更长、更详细的信息,可以使用“这是什么”模式。这些信息可以使用HTML格式,还可以包含指向主要帮助文档的链接。
下面的示例脚本展示了如何使用这些方法,并且还演示了如何在“这是什么”消息中处理链接:
from PyQt4 import QtCore, QtGui
class Window(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.statusBar()
self.toolbar = self.addToolBar('toolbar')
action = QtGui.QWhatsThis.createAction(self)
action.setStatusTip('Enter what\'s this mode')
self.toolbar.addAction(action)
widget = QtGui.QGroupBox(self)
layout = QtGui.QVBoxLayout(widget)
self.setCentralWidget(widget)
for name in 'one two three four'.split():
checkbox = QtGui.QCheckBox('Checkbox %s' % name, self)
checkbox.setToolTip('Tooltip for checkbox %s' % name)
checkbox.setWhatsThis("""
<b>What\'s this text</b>:<br><br>
Checkbox %s<br><br>
<a href="url-%s">link to main help</a>
""" % (name, name))
checkbox.installEventFilter(self)
layout.addWidget(checkbox)
def eventFilter(self, source, event):
if event.type() == QtCore.QEvent.WhatsThisClicked:
print(event.href())
return QtGui.QMainWindow.eventFilter(self, source, event)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.setGeometry(500, 300, 250, 200)
window.show()
sys.exit(app.exec_())