qt textbrowser名称保存在数组中

时间:2014-03-23 12:53:35

标签: c++ arrays qt

我试图在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++;

     }

}

1 个答案:

答案 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行重复代码并不是那么可怕。