【问题标题】:C++ Qt QTableWidget item moves when resizing column调整列大小时 C++ Qt QTableWidget 项目移动
【发布时间】:2015-01-15 23:13:52
【问题描述】:

我正在为现有应用程序编写一个 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();

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

这里有 2 张效果截图(列调整大小之前和之后)。您可以看到“cat”和“frog”这两个词比正常情况更向右移动。

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

【问题讨论】:

    标签: c++ qt qtablewidget qtablewidgetitem


    【解决方案1】:

    问题的根源似乎与 Windows 显示设置有关。 我的笔记本电脑文本显示设置为“中 - 125%”。
    当我将其设置回“更小 - 100%”时,问题就消失了。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-28
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-07
      相关资源
      最近更新 更多