2017-08-28 8 views
0

QCheckboxQTableWidgetに調整すると問題が発生します。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

私のアプリは、Mac、Win、Linuxプラットフォーム用にQt 5.9で作成されています。 問題の詳細が必要かどうか教えてください。

答えて

0

Qtアプリを作成していて異なる解像度をサポートしている間は、どのQWidgetでも問題が発生する可能性があります。

QQidboxクラスを上書きする必要があります。

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がそれぞれの解像度で自動的にサイズを調整します。

これは将来誰かの時間を節約することを願っています。

ありがとうございました。

0

ウィジェットのデザインとサイズはスタイルによって決まります。ネイティブスタイル(ターゲットシステムでQApplicationがデフォルトとして設定されているもの)をオーバーライドするには、QStyleをターゲットシステムに派生させてpixelMetric()を再実装してQStyle::PM_IndicatorWidthQStyle::PM_IndicatorHeightの適切な値を返す必要がありますそれ)。

+0

私はこれを試しましたが、問題を解決しました。私は解決策を得て答えとして投稿するので、将来他の誰かの時間を節約できます。 –

関連する問題