【发布时间】:2016-07-05 19:10:40
【问题描述】:
是否可以从每个 spinbox 中获取值列表并将它们放入列表中?
for (int i = 0; i < norm_size+1; i++){
getSpinleftValue(i);
}
我使用 for 循环来设置我的所有连接
.
void GuiTest::getSpinleftValue(int index){
QSpinBox* spinleft[norm_size+1] = {ui->norm_spinBox_9,
ui->norm_spinBox_10,
ui->norm_spinBox_11,
ui->norm_spinBox_12,
ui->norm_spinBox_13,
ui->norm_spinBox_14,
ui->norm_spinBox_15,
ui->norm_spinBox_16};
QObject::connect(spinleft[index], SIGNAL(valueChanged(int)), this, SLOT(spinboxWrite(int, index)));
}
.
然后,一旦 for 循环建立连接,我想将它们的输出写入一个列表以供以后使用。
.
void GuiTest::spinboxWrite(int arg1, int index){
int norm_list[16];
qDebug() << arg1;
qDebug() << index;
}
在这种情况下,我使用了一些调试功能,以便查看它们是否正常工作。现在它看起来不起作用,因为我没有正确编写“连接”部分。
No such slot GuiTest::spinboxWrite(int, index) in
我知道另一种解决方案是创建一堆这样的
void GuiTest::on_norm_spinBox_9_valueChanged(int arg1)
{
//code here
}
但如果可以的话,我宁愿不要用其中的 16 个来污染我的整个文件!
【问题讨论】:
-
您可以对多个旋转框使用相同的功能。这应该让你减少到 2 个功能。
-
您没有展示如何将信号连接到插槽,但它应该类似于
connect(spinbox1, valueChanged, guitest, on_norm_spinBox_valueChanged);。 -
我使用QtCreator自带的gui设计器。它为我做到了。
-
在 gui 设计器中,您应该能够打开 .ui 文件,单击“Edit Signals/Slots”并将箭头从旋转框中拖到窗口,然后选择
valueChanged(int)左边和右边的一些功能。您可以为多个旋转框选择右侧的相同功能。 -
我刚刚尝试了您的建议。但我不确定 "to the window" 指的是什么。
标签: c++ qt signals-slots