2017-08-28 61 views
0

我在將QCheckbox調整爲QTableWidget時遇到問題。將QCheckbox調整爲QTableWidget:Qt

它在Mac和Linux中按預期工作,但在Windows中創建問題。

我已經使用它並嘗試了不同的解決方案,但它並沒有解決我的問題。

代碼:

QWidget* cellWidget = new QWidget(); 
QCheckBox *box = new QCheckBox(); 
box->setCheckState(Qt::Unchecked); 
QHBoxLayout* layout = new QHBoxLayout(cellWidget); 
layout->addWidget(box); 
layout->setAlignment(Qt::AlignCenter); 
layout->setContentsMargins(0, 0, 0, 0); 
cellWidget->setLayout(layout); 
ui->twidget_header->setCellWidget(0, 0, cellWidget); 

的Mac OS O/P:按預期

enter image description here
贏OS O/P:問題與複選框尺寸和對齊

enter image description here

我的應用程序創建於Qt 5.9 Mac,Win和Linux平臺。 讓我知道你是否需要關於這個問題的更多信息。

回答

0

在創建Qt應用程序並支持不同分辨率時,任何QWidget都可能發生此問題。

爲了克服QWidget(QCheckbox/QRadiobutton)的大小,您只需要覆蓋QWidget類。

創建customcheckbox.h文件並覆蓋QCheckbox小部件。按照您的要求執行customcheckbox.cpp文件。

通過這樣做,QCheckbox將自動調整各自分辨率的大小。

希望這將爲未來節省一些人的時間。

謝謝。

0

小部件的設計和大小由樣式決定。要覆蓋原生樣式(無論目標系統上的默認設置爲QApplication),您必須爲該目標系統導出自己的QStyle,並重新實現pixelMetric()以返回QStyle::PM_IndicatorWidthQStyle::PM_IndicatorHeight的合適值(我認爲;未檢查那)。

+0

我試過這個,但dint解決了我的問題。我得到了解決方案並作爲答案發布,這樣可以在未來爲其他人節省時間。 –