QTableWidget表头未显示

4
我使用UI编辑器创建了一个QTableWidget。
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    populateFilesTable();
    connect(ui->browseButton, SIGNAL(clicked()), this, SLOT(selectDirectory()));
    connect(ui->searchButton, SIGNAL(clicked()), this, SLOT(findFiles()));
}

这里展示了UI的设置,然后我调用函数populateFilesTable()
该函数如下:
void MainWindow::populateFilesTable()
{
    ui->filesTable->setSelectionBehavior(QAbstractItemView::SelectRows);

    QStringList labels;
    labels << tr("Filename") << tr("Size");
    ui->filesTable->setHorizontalHeaderLabels(labels);
    ui->filesTable->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch);
    ui->filesTable->verticalHeader()->hide();
    ui->filesTable->setShowGrid(true);
}

表格上的标题没有显示出来,有任何想法吗?谢谢。
2个回答

5

什么出了问题?

水平标头需要从 QTableWidget 获取的信息。由于实例化时 QTableWidget 的列数和行数都为空,因此即使调用了setHorizontalHeaderLabels也不会显示标头。


解决方法

在设置标头之前插入列:

ui->filesTable->insertColumn(0);
ui->filesTable->insertColumn(1);

QStringList labels;
labels << tr("Filename") << tr("Size");
ui->filesTable->setHorizontalHeaderLabels(labels);

由于我对QT的知识有限,我只是试图理解我需要做什么等等。我认为可能有些东西丢失了,但不确定如何完成它。非常好用,谢谢! - sark9012

0

对于PyQt5,

请检查self.tableWidget.horizontalHeader().setVisible(True)是否为真,而不是self.tableWidget.horizontalHeader().setVisible(False)

我不知道为什么,但在将ui文件转换为py文件后,默认情况下将此属性设置为false。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接