QT:如何根据SpinBox的值来提高/降低标签的值
QT: How do I raise/lower value of label depending on value of SpinBox
首先让我说,我是QTCreator的新手。我有以下所有的UI设置,只是不知道如何正确连接信号和插槽:
好的,这就是我的问题。我有5个SpinBoxes,最大值为10,最小值为0,所有这些都从0开始。我有一个值为25的标签。当我用+/-按钮更改旋转框的值时,我希望标签减去或加回25的标签。此外,一旦值25达到0,我希望禁用所有用于添加的spinbox。
(不幸的是,由于我使用表单创建者设置了这一切,所有代码都是默认的。
示例:
Label: 1
SB1: 5
SB2: 10
SB3: 2
SB4: 6
SB5: 1
SpinBoxes的所有值都等于24。当按下加号按钮时,所有框的值都将为25。因此,我希望所有的+按钮都被禁用,当按下-按钮时,我希望启用。
以下是假设您有一个带有标签和5个spinbox的表单类的代码。
标题:
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
double sum;
QList<QSpinBox*> spinboxes;
private slots:
void spinbox_value_changed();
};
来源:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
sum = 25;
ui->setupUi(this);
spinboxes << ui->spinBox_1 << ui->spinBox_2 << ui->spinBox_3
<< ui->spinBox_4 << ui->spinBox_5;
foreach(QSpinBox* spinbox, spinboxes) {
connect(spinbox, SIGNAL(valueChanged(int)),
this, SLOT(spinbox_value_changed()));
spinbox->setRange(0, sum);
}
spinbox_value_changed();
}
MainWindow::~MainWindow() {
delete ui;
}
void MainWindow::spinbox_value_changed() {
double current_sum = 0;
foreach(QSpinBox* spinbox, spinboxes) {
current_sum += spinbox->value();
}
double points_left = sum - current_sum;
if (points_left < 0) {
foreach(QSpinBox* spinbox, spinboxes) {
spinbox->setValue(0);
}
return;
}
foreach(QSpinBox* spinbox, spinboxes) {
if (points_left == 0) {
spinbox->setMaximum(spinbox->value());
} else {
spinbox->setMaximum(sum);
}
}
ui->label->setText(QString().setNum(points_left));
}
我希望代码是不言自明的。Spinboxes不会在我的系统上禁用它们的按钮(尽管在使用另一种样式时可能会禁用),但当达到最大值时,加号按钮就会停止工作。
相关文章:
- 有根的二进制搜索树.保留与其父级的链接
- 函数何时会在c++中包含stack_Unwind_Resume调用
- Python中的for循环与C++有何不同
- 根中的组合
- C 和 C++ 中开关语句的案例标签的常量值,但显示不同的行为
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- 如何正确指定 goto 语句的标签?
- 在C++中释放内存期间,迭代器与指针有何不同
- 使用g++静态初始化带有命名标签的嵌套C++结构
- 比根<操作员
- 使用根/C++时出错:没有匹配的构造函数来初始化'TTree'
- 通过水平滚动条更改标签
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- 从 QFontDatabase 设置 QFont 将所有标签设置为等宽字体?Qt C++
- 在字符数组 (C++/根) 中查找双精度值
- 在C++中存储要输入的标签列表
- 如何在等效列表中查找最小的连接标签
- 标签检测鼠标单击 c++
- 如何从命令行使用 cmake 为有根的安卓设备制作可执行文件?
- 从网站复制证书,并使用脚本将其添加到受信任的根证书颁发机构