2011-07-14 32 views
2

在运行时尝试将按钮添加到QWidget时,我遇到了一个奇怪的问题。我有一个QTabWidget窗口,它有2个选项卡。当我按下窗口上的按钮时,它会在第一个选项卡上生成一个复选框数组。如果QWidget在屏幕上不可见,为什么我只能在运行时将元素添加到QWidget?

问题是,当我打开第一个标签页时,按下按钮时没有任何反应,但如果我打开第二个标签页,请按下按钮,然后返回到第一个标签页,复选框正确显示。这是从用于创建复选框代码示例:

for(int i = 0; i < x_dim; ++i){ 
    for(int j = 0; j < y_dim; ++j){ 
     checkBoxVector.append(new QCheckBox(ui->dim1)); 
     checkBoxVector.last()->setGeometry(i * 20, j * 20, 20, 20); 
    } 
} 

是否有某种财产我必须能够在QTabWidget这个工作,因为它应该?

+1

你可能只需要调用qApp-> processEvents()加入后? –

+0

你可以给我一个调用这个函数的例子吗? Qt文档有点混乱(不太清楚如何使用标志)。谢谢! –

+0

你会把qApp-> processEvents();在你的两个for循环之后。弗兰克奥斯特费尔德的答案不那么沉重,先试试! –

回答

5

你可能需要显示()新创建的小部件,让布局更新:

checkBoxVector.last()->show(); 
ui->dim1->updateGeometry(); 
+0

非常感谢,这工作! –