模仿之前的做法,用Qt创造器再创建一个名为“Calculator3”的项目。将Calculator2项目中的calculatordialog.ui和ui_calculatordialog.h文件,原封不动地复制到Calculator3项目中,覆盖同名文件。
“加数”与“被加数”编辑框,只接受合法的浮点数,不接受除0~9十个阿拉伯数字和小数点以外的其它字符,小数点可以没有,但不能多于一个。
C:\Users\Minwei\Projects\Qt\Calculator3\calculatordialog.cpp:
xxxxxxxxxx
141...
2
3...
4CalculatorDialog::CalculatorDialog(QWidget *parent)
5 : QDialog(parent)
6 , ui(new Ui::CalculatorDialog)
7{
8 ...
9 // 设置数字验证器
10 ui->m_editX->setValidator(new QDoubleValidator(this));
11 ui->m_editY->setValidator(new QDoubleValidator(this));
12 ...
13}
14...
只有当加数与被加数都存在且为合法浮点数时,显示“=”的按钮才被激活,否则禁用。
C:\Users\Minwei\Projects\Qt\Calculator3\calculatordialog.h:
xxxxxxxxxx
91...
2class CalculatorDialog : public QDialog
3{
4 ...
5private slots:
6 void enabledButton();
7 ...
8};
9...
C:\Users\Minwei\Projects\Qt\Calculator3\calculatordialog.cpp:
xxxxxxxxxx
221...
2CalculatorDialog::CalculatorDialog(QWidget *parent)
3 : QDialog(parent)
4 , ui(new Ui::CalculatorDialog)
5{
6 ...
7 // 手动连接信号槽
8 connect(ui->m_editX, SIGNAL(textChanged(QString)),
9 this, SLOT(enabledButton()));
10 connect(ui->m_editY, SIGNAL(textChanged(QString)),
11 this, SLOT(enabledButton()));
12 ...
13}
14...
15void CalculatorDialog::enabledButton()
16{
17 bool xOk, yOk;
18 ui->m_editX->text().toDouble(&xOk);
19 ui->m_editY->text().toDouble(&yOk);
20 ui->m_button->setEnabled(xOk && yOk);
21}
22...
点击显示“=”的按钮,计算结果显示在“和”编辑框中。
在Qt创造器中,双击项目浏览器窗格中的calculatordialog.ui文件,启动Qt设计师,选中显示“=”的按钮,在右键菜单中选择“转到槽...”弹出“信号选择”对话框,在其中选择“QAbstractButton/clicked()”,点击“OK”按钮。
C:\Users\Minwei\Projects\Qt\Calculator3\calculatordialog.cpp:
xxxxxxxxxx
81...
2void CalculatorDialog::on_m_button_clicked()
3{
4 ui->m_editZ->setText(QString::number(
5 ui->m_editX->text().toDouble() +
6 ui->m_editY->text().toDouble()));
7}
8...
点击位于Qt创造器主界面左下角的“运行”按钮,或者选择“构建”菜单中的“运行”菜单项,当然也可以使用快捷键“Ctrl+R”。项目将被构建并运行,其效果如图所示: