QtCreater で、プロジェクトにテーブルを追加しました。私のコードでは、テーブルに出力するデータを生成しています。QCheckbox
行を選択できるように、各行にa を追加したいと思います。表の内容はすべて左揃えになっていますが、各行の最初の列にあるこれらのチェックボックスのみを中央揃えにするにはどうすればよいですか?
私はQCheckbox
使用して追加しています:
ui->data_table->setCellWidget(rowCount,0, new QCheckBox);
QtCreater で、プロジェクトにテーブルを追加しました。私のコードでは、テーブルに出力するデータを生成しています。QCheckbox
行を選択できるように、各行にa を追加したいと思います。表の内容はすべて左揃えになっていますが、各行の最初の列にあるこれらのチェックボックスのみを中央揃えにするにはどうすればよいですか?
私はQCheckbox
使用して追加しています:
ui->data_table->setCellWidget(rowCount,0, new QCheckBox);
Barry Mavin に 2 つの親指を立てます。サブクラス化する必要さえありません。
1行...
pCheckBox->setStyleSheet("margin-left:50%; margin-right:50%;");
終わり!!
通常、これにはレイアウトとコンテナ ウィジェットを使用します。それは醜い解決策ですが、うまくいきます:
QWidget * w = new QWidget();
QHBoxLayout *l = new QHBoxLayout();
l->setAlignment( Qt::AlignCenter );
l->addWidget( <add your checkbox here> );
w->setLayout( l );
ui->data_table->setCellWidget(rowCount,0, w);
したがって、基本的には次のようになります。
Table Cell -> Widget -> Layout -> Checkbox
テーブルを介してチェックボックスにアクセスする必要がある場合は、それを考慮する必要があります。
これは古い投稿ですが、実際にはこれを達成するためのはるかに簡単で軽量な方法がありますQCheckBox
。stylesheet
margin-left:50%;
margin-right:50%;
スタック オーバーフローに関する同様の質問で述べたように、これは現在未解決のバグです。
#if QT_VERSION < 0x046000
#include <QCommonStyle>
class MyStyle : public QCommonStyle {
public:
QRect subElementRect(SubElement subElement, const QStyleOption *option, const QWidget *widget = 0) const {
switch(subElement) {
case QStyle::SE_CheckBoxIndicator: {
QRect r = QCommonStyle::subElementRect(subElement, option, widget);
r.setRect( (widget->width() - r.width())/2, r.top(), r.width(), r.height());
return QRect(r);
}
default: return QCommonStyle::subElementRect(subElement, option, widget);
}
}
};
#else
#include <QProxyStyle>
#include <QStyleFactory>
class MyStyle: public QProxyStyle {
public:
MyStyle():QProxyStyle(QStyleFactory::create("Fusion")) {}
QRect subElementRect(SubElement subElement, const QStyleOption *option, const QWidget *widget = 0) const {
switch(subElement) {
case QStyle::SE_CheckBoxIndicator: {
QRect r = QProxyStyle::subElementRect(subElement, option, widget);
r.setRect( (widget->width() - r.width())/2, r.top(), r.width(), r.height());
return QRect(r);
}
default: return QProxyStyle::subElementRect(subElement, option, widget);
}
}
};
#endif
QCheckBox *box = new QCheckBox();
box->setStyle(new MyStyle());