0

我在QCheckbox适应QTableWidget.

它在 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 : 符合预期

在此处输入图像描述
Win OS O/P:复选框大小和对齐问题

在此处输入图像描述 .

我的应用程序是Qt 5.9为 Mac、Win 和 Linux 平台创建的。如果您需要有关该问题的更多信息,请告诉我。

4

2 回答 2

0

小部件的设计和大小由样式决定。要覆盖本机样式(QApplication目标系统上设置为默认值的任何内容),您必须QStyle为该目标系统派生自己的样式,并重新实现pixelMetric()以返回适当的值QStyle::PM_IndicatorWidthQStyle::PM_IndicatorHeight(我认为;没有检查)。

于 2017-08-28T13:27:56.283 回答
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将自动调整相应分辨率的大小。

希望这将在将来节省某人的时间。

谢谢。

于 2017-11-15T06:09:32.307 回答