当我将QCheckbox
调整为QTableWidget
时,我遇到了问题。
它在Mac和Linux中按预期工作,但在Windows中产生问题。
我用Google搜索并尝试了不同的解决方案,但它并没有解决我的问题。
代码:
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:按预期
我的应用程序是在Qt 5.9
为Mac,Win和Linux平台创建的。
如果您需要有关此问题的更多信息,请与我们联系。
答案 0 :(得分:0)
小部件的设计和大小由样式决定。要覆盖原生样式(无论QApplication
设置为目标系统上的默认设置),您必须为该目标系统派生自己的QStyle
并重新实现pixelMetric()
以返回QStyle::PM_IndicatorWidth
和QStyle::PM_IndicatorHeight
的适当值(我认为;没有检查过)。
答案 1 :(得分:0)
当您创建Qt应用程序并支持不同的分辨率时,任何QWidget都会出现问题。
要克服QWidget
(QCheckbox / QRadiobutton)的大小,您只需要覆盖QWidget类。
创建customcheckbox.h
文件并覆盖QCheckbox
小部件。
class CustomCheckBox : public QCheckBox
{
Q_OBJECT
public:
CustomCheckBox(QWidget *parent=NULL);
private:
bool m_isChecked;
public slots:
void emitToggleSignal(bool);
};
根据您的要求实施customcheckbox.cpp
文件。
通过执行此操作,QCheckbox
将自动调整相应分辨率的大小。
希望这将节省某人将来的时间。
感谢。