Элемент С++ Qt QTableWidget перемещается при изменении размера столбца

Я пишу плагин C++ для существующего приложения, где мне нужно отобразить окно, содержащее QTableWidget, используя Qt.

Вот отрывок моего рабочего кода, в котором я создаю 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 скриншота эффекта (до и после изменения размера столбца). Вы можете видеть, как слова «кошка» и «лягушка» сместились вправо больше, чем обычно.

введите здесь описание изображения

введите здесь описание изображения

Что я делаю неправильно? Я хочу, чтобы текст каждой ячейки был выровнен слева от каждого столбца.


person panofish    schedule 15.01.2015    source источник


Ответы (1)


Корень проблемы, по-видимому, связан с настройками дисплея Windows. В настройках отображения текста на моем ноутбуке было установлено значение «Среднее — 125 %».
Когда я снова установил значение «Меньше — 100 %», проблема исчезла.

Я все еще хотел бы, чтобы моя программа работала правильно, если пользователь должен использовать 125% текста, но, по крайней мере, теперь я знаю причину.

Кто-нибудь знает, как предотвратить вышеуказанную проблему при использовании текста 125%?

введите здесь описание изображения

person panofish    schedule 16.01.2015