gpt4 book ai didi

c++ - QTableView 比它的容器大

转载 作者:行者123 更新时间:2023-11-28 04:29:57 25 4
gpt4 key购买 nike

我正在开发 Qt 应用程序。我有 QMainWindow。我在其中添加了 QTableView。当我运行该应用程序时,我发现我需要滚动以显示整个表格,并且它下方还会显示空白区域。我希望主窗口水平调整大小以使用表格所需的空间。此外,我希望它垂直调整大小以不使用未使用的空间。我怎样才能做到这一点?到目前为止,这是我的代码:

void MainWindow::initUi() {
setWindowTitle(tr("Main Window"));
QWidget* centralWidget = new QWidget(this);
QVBoxLayout *mainLayout = new QVBoxLayout(centralWidget);
QFormLayout *upperLayout = new QFormLayout;
// Default layout appearance of QMacStyle
upperLayout->setRowWrapPolicy(QFormLayout::DontWrapRows);
upperLayout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
upperLayout->setFormAlignment(Qt::AlignHCenter | Qt::AlignTop);
upperLayout->setLabelAlignment(Qt::AlignLeft);

QVBoxLayout *resultsLayout = new QVBoxLayout;
QTableView* table = new QTableView(centralWidget);
table->verticalHeader()->hide();
QStandardItemModel* model= new QStandardItemModel(4, 4);
for (int row = 0; row < 4; ++row) {
for (int column = 0; column < 4; ++column) {
QStandardItem *item = new QStandardItem(QString("row %0, column %1").arg(row).arg(column));
model->setItem(row, column, item);
}
}

table->setModel(model);
QLabel* upperLabel = new QLabel(tr("Label:"), centralWidget);
upperLabel->setAlignment(Qt::AlignLeft);
resultLabel = new QLabel(tr("Result goes here"), centralWidget);
mainLayout->addLayout(resultsLayout);
resultsLayout->addLayout(upperLayout);
resultsLayout->addWidget(table);
upperLayout->addRow(upperLabel, resultLabel);
centralWidget->setLayout(mainLayout);
setCentralWidget(centralWidget);
this->adjustSize();
}

最佳答案

将table的sizeAdjustPolicy设置为AdjustToContents View ,然后将size policy在水平和垂直方向设置为Fixed。

AdjustToContents 可能会对 View 中的动态内容产生轻微的性能损失,因为每次数据更改都可能更改布局。

Qt Designer 是一个非常好的工具,可以快速解决布局问题; {table,list,tree} widgets 的行为与 views 的行为完全相同(因为它们相同)并且 widgets 可以快速填充虚拟数据Qt 设计器。

关于c++ - QTableView 比它的容器大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53209162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com