非模态对话框初始化了一个QTableWidget,析构了这个QTableWidget,再新建QTableWidget为什么不显示
时间: 2024-03-06 10:47:45 浏览: 76
QTableWidget只在表格需要在屏幕上显示的那些行填充数据,不显示的不填充数据,表格行数是数据的行数
如果您在非模态对话框中初始化一个QTableWidget,并在对话框被关闭时析构该QTableWidget,然后再新建一个QTableWidget并将其设置为对话框的中心部件,但是发现新的QTableWidget不显示,可能是因为您没有重新设置对话框的布局。
在Qt中,当您将一个QWidget对象设置为另一个QWidget对象的子部件时,您需要重新设置布局,以确保子部件被正确地布局和显示。如果您没有重新设置布局,子部件可能无法显示。
因此,如果您想要在非模态对话框中重新创建一个QTableWidget对象并将其设置为对话框的中心部件,您需要按照以下步骤进行:
1. 创建一个新的QTableWidget对象:
```cpp
QTableWidget *tableWidget = new QTableWidget(dialog);
```
2. 将新的QTableWidget对象设置为对话框的中心部件:
```cpp
dialog->setCentralWidget(tableWidget);
```
3. 重新设置对话框的布局:
```cpp
QVBoxLayout *layout = new QVBoxLayout(dialog);
layout->addWidget(tableWidget);
dialog->setLayout(layout);
```
4. 调用QWidget::show()函数显示对话框:
```cpp
dialog->show();
```
这样,新的QTableWidget对象就会显示在对话框中。
需要注意的是,如果您使用的是Qt Designer来设计对话框,您可以在属性编辑器中直接将QTableWidget对象拖动到对话框上,并设置其为中心部件,Qt Designer会自动为您设置正确的布局。在这种情况下,您不需要手动设置布局。
阅读全文