c++ - Qt 计算器中更少的连接

标签 c++ qt signals-slots calculator

出于学习目的,我正在使用 Qt 和 C++ 编写一个简化的计算器。每个数字都是一个 QPushButton,它使用相同的插槽来修改用作显示的 lineEdit 小部件中的文本。

插槽使用 sender() 方法确定按下了哪个按钮,因此正确的数字将写在显示小部件上。

为了让所有按钮都能正常工作,我必须为每个按钮编写一个连接,有点像这样:

connect(ui->button1, SIGNAL(clicked()), this, SLOT(writeNum()));

因为它们都使用相同的插槽,唯一改变的是所使用的按钮,所以下一个发送者将是 ui->button2ui->button3 等等。我的问题是,有没有办法减少已定义连接的数量?

编辑:Here这是一个有用的链接,详细讨论了这个问题。

最佳答案

如果您使用 QtDesigner 或 QtCreator 的表单编辑器,您只需在两者之间拖线,它就会为您填写代码。

您也可以将所有按钮保留在列表结构中,但我会使用 QVector不是标准数组。

您可能还想重新考虑使用 sender() 方法,它违反了 OOP 设计。而是将所有按钮连接到 QSignalMapper然后将 mapped() 连接到您的文本框。

关于c++ - Qt 计算器中更少的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2209652/

相关文章:

c++ - 如何检测 ssh 连接(通过 QProcess)何时完成?

c++ - QObject模型在QT中为空

c++ - 为什么我不能在信号上启动QThread?

c++ - QT 队列触发连接

c++ - 为什么 std::vector 有两个赋值运算符?

c++ - Qt中除了单选按钮之外是否有类似gui元素的开关

c++ - 如何用/Zc :wchar_t?编译Qt

c++ - Qt - 在 Qt Designer 中将 QMainWindow 设置为不可调整大小

c++ - 为什么 QTreeView 不显示数据?

c++ - Qt 信号/槽和线程