调整列大小时,C ++ Qt QTableWidget项会移动

时间:2015-01-15 23:13:52

标签: c++ qt qtablewidget qtablewidgetitem

我正在为现有的应用程序编写一个C ++插件,我需要使用Qt显示一个包含QTableWidget的窗口。

以下是我正在构建QTableWidget并填充单元格的工作代码的摘录。

tableWidget->setRowCount(0);  // clear tablewidget
tableWidget->clearContents();

tableWidget->setColumnCount(5);  
tableWidget->setRowCount(2);  

QStringList header;
header << "Date" << "Owner" << "Type" << "Folder" << "Path";
tableWidget->verticalHeader()->setDefaultSectionSize(20);  
tableWidget->setHorizontalHeaderLabels(header);

tableWidget->setItem(0,0,new QTableWidgetItem(QString("dog")));
tableWidget->setItem(0,1,new QTableWidgetItem(QString("cat")));
tableWidget->setItem(0,2,new QTableWidgetItem(QString("frog")));
tableWidget->setItem(1,0,new QTableWidgetItem(QString("shark")));

tableWidget->item(0,0)->setTextAlignment(Qt::AlignLeft);
tableWidget->item(0,1)->setTextAlignment(Qt::AlignLeft);
tableWidget->item(0,2)->setTextAlignment(Qt::AlignLeft);

tableWidget->resizeColumnsToContents();

它按预期工作,除了每个连续列内的数据比前一列更向右移动。当您调整列的大小并在右侧的“幻灯片”右侧列中查看数据时,这可能会被夸大。

以下是效果的两个屏幕截图(列调整大小之前和之后)。您可以看到“猫”和“青蛙”这两个词比正常情况更向右移动。

enter image description here

enter image description here

我做错了什么?我希望每个单元格文本都对齐到每列的左侧。

1 个答案:

答案 0 :(得分:0)

问题的根源似乎与Windows显示设置有关。 我的笔记本电脑文本显示设置设置为&#34;中等 - 125%&#34; 当我把它重新设置为&#34;更小 - 100%&#34;然后问题就消失了。

如果用户应该使用125%的文本,我仍然希望我的程序正常工作,但至少现在我知道原因。

有人知道在使用125%文字时如何防止上述问题吗?

enter image description here