出于学习目的,我正在使用 Qt 和 C++ 编写一个简化的计算器。每个数字都是一个 QPushButton,它使用相同的插槽来修改用作显示的 lineEdit 小部件中的文本。
插槽使用 sender() 方法确定按下了哪个按钮,因此正确的数字将写在显示小部件上。
为了让所有按钮都能正常工作,我必须为每个按钮编写一个连接,有点像这样:
connect(ui->button1, SIGNAL(clicked()), this, SLOT(writeNum()));
因为它们都使用相同的插槽,唯一改变的是所使用的按钮,所以下一个发送者将是 ui->button2
,ui->button3
等等。我的问题是,有没有办法减少已定义连接的数量?
编辑:Here这是一个有用的链接,详细讨论了这个问题。
最佳答案
如果您使用 QtDesigner 或 QtCreator 的表单编辑器,您只需在两者之间拖线,它就会为您填写代码。
您也可以将所有按钮保留在列表结构中,但我会使用 QVector
不是标准数组。
您可能还想重新考虑使用 sender()
方法,它违反了 OOP 设计。而是将所有按钮连接到 QSignalMapper
然后将 mapped()
连接到您的文本框。
关于c++ - Qt 计算器中更少的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2209652/