使用我的 QT5 自定义小部件调整 QGroupBox 大小

Posted

技术标签:

【中文标题】使用我的 QT5 自定义小部件调整 QGroupBox 大小【英文标题】:QGroupBox sizing with my QT5 custom widget 【发布时间】:2016-02-20 19:54:32 【问题描述】:

我正在尝试制作一个自定义小部件:用于显示具有名称、值并且可以以八进制/十进制十六进制显示的处理器寄存器。代码显示在底部。当我使用如图所示的代码(即插入 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()));

【问题讨论】:

【参考方案1】:

请致电QLayout::setContentsMargins() 获取mainLayouthbox。尝试将(3, 3, 3, 3) 作为起点参数并进行调整。根据文档,布局在大多数平台上的默认边距为 11 像素。

【讨论】:

以上是关于使用我的 QT5 自定义小部件调整 QGroupBox 大小的主要内容,如果未能解决你的问题,请参考以下文章

在插入小部件时重新调整自定义 QGraphicsWIdget 的大小

如何允许浮动 Qt5 停靠小部件的交互式调整大小

具有重叠子小部件的 Qt 自定义小部件

QGraphicsBlurEffect 调整文本大小但不调整小部件本身

使 QListWidget 调整其项目的大小以填充空间

我可以在基于模型的 QListView 中使用自定义小部件作为视图吗?