0

カスタム ウィジェットを作成しようとしています。名前と値があり、8 進数/10 進数で表示できるプロセッサ レジスタを表示します。コードは下部に表示されます。コードを次のように使用すると、より良い結果が得られます (つまり、QRadioButtons を挿入します)。

ここに画像の説明を入力

私が使用する場合

mainLayout->addWidget(DisplayMode);

代わりに(これが正しい方法だと思います)、結果の画像は

ここに画像の説明を入力

私は何かを誤解していますか?なにが問題ですか?

RegisterWidget::RegisterWidget(QWidget *parent)
:QFrame (parent)
{
  mValue = 0;
  mName = "";
  setFrameStyle(QFrame::Panel | QFrame::Sunken);    
  QHBoxLayout *mainLayout = new QHBoxLayout(this);
  label = new QLabel(tr("mName"),this);
  label->setText(mName);
  label->setLineWidth(2);   
  QGroupBox *DisplayMode = new QGroupBox("");
  QRadioButton *OctalR = new QRadioButton(this);
  QRadioButton *DecimalR = new QRadioButton(this);
  DecimalR->setChecked(true);    DecimalR->setDown(true);
  QRadioButton *HexaR = new QRadioButton(this);
  QHBoxLayout *hbox = new QHBoxLayout;
  hbox->addWidget(OctalR);
  hbox->addWidget(DecimalR);
  hbox->addWidget(HexaR);
  hbox->addStretch(1);
  DisplayMode->setLayout(hbox);
  mainLayout->addWidget(label);
  Value = new QLCDNumber(this);
  Value->setDigitCount(8);
  Value->setSegmentStyle(QLCDNumber::Flat);
  Value->display(mValue);
  mainLayout->addWidget(Value);
 /* mainLayout->addWidget(DisplayMode);*/ 
  mainLayout->addWidget(OctalR);
  mainLayout->addWidget(DecimalR);
  mainLayout->addWidget(HexaR);
  setLineWidth(3);
  setLayout(mainLayout); 
    connect(OctalR, SIGNAL(clicked()), this, SLOT(setOctal()));
    connect(DecimalR, SIGNAL(clicked()), this, SLOT(setDecimal()));
    connect(HexaR, SIGNAL(clicked()), this, SLOT(setHexa()));
}
4

1 に答える 1

1

QLayout::setContentsMargins()と の両方mainLayoutを呼び出しhboxます。(3, 3, 3, 3)出発点と微調整のパラメーターとして試してください。ドキュメントによると、レイアウトには、ほとんどのプラットフォームで 11 ピクセルのデフォルトの余白があります。

于 2016-02-23T20:29:20.693 に答える