我试图在qt gui中显示我的4by4矩阵,因为我已经为矩阵的每个元素使用了一个文本浏览器。现在我能够使用开关盒显示矩阵,但我不喜欢这种方法。我想创建一个数组,我可以保存textbrowser的名称,并愿意使用for循环访问它们。下面是我目前的代码。请指导我如何得到我愿意做的事。
for (i = 0; i <= 3; i++)
{
for (j = 0; j <= 3;j++)
{
switch(no){
case 1:
ui->textBrowser_200->setText(text1);
break;
case 2:
ui->textBrowser_201->setText(text1);
break;
case 3:
ui->textBrowser_202->setText(text1);
break;
case 4:
ui->textBrowser_203->setText(text1);
break;
case 5:
ui->textBrowser_204->setText(text1);
break;
case 6:
ui->textBrowser_205->setText(text1);
break;
case 7:
ui->textBrowser_206->setText(text1);
break;
case 8:
ui->textBrowser_207->setText(text1);
break;
case 9:
ui->textBrowser_208->setText(text1);
break;
case 10:
ui->textBrowser_209->setText(text1);
break;
case 11:
ui->textBrowser_210->setText(text1);
break;
case 12:
ui->textBrowser_211->setText(text1);
break;
case 13:
ui->textBrowser_212->setText(text1);
break;
case 14:
ui->textBrowser_213->setText(text1);
break;
case 15:
ui->textBrowser_214->setText(text1);
break;
case 16:
ui->textBrowser_215->setText(text1);
break;
}
no++;
}
}
答案 0 :(得分:0)
这是一个简单的解决方案,可让您保留当前的设计师ui:
将此成员变量添加到您自己的类中,以获得小部件指针的二维矩阵:
std::array< std::array <QTextBrowser *, 4>, 4> mTextBrowserMatrix;
然后在构造函数中初始化它,使用16行代码,在后为Designer ui调用setupUi()
:
mTextBrowserMatrix[0][0] = ui->textBrowser_200;
// repeat above for all 16 widgets.
然后只需访问mTextBrowserMatrix[0][0]
等
你可以使用任何容器甚至普通的C数组,上面只是一个例子。
当然,如果您只是在代码中创建QTextBrowser矩阵,而不是使用Designer,那么您将保存一些重复的复制粘贴样式代码并具有更清晰的Designer设计。但既然你已经拥有它们,不妨现在坚持下去,16行重复代码并不是那么可怕。