AQLayout
总是尝试使用QWidget
. 但是,有时,您希望它保持最小尺寸并以小部件为中心...因为您觉得它看起来更好(如果布局仅包含没有意义的项目,显示大于其默认尺寸:QLabel
,QPushButton
和类似的东西)。
过去我遇到过这个问题数百次,我总是在各处添加愚蠢的 QSpacerItems 来解决这个问题。我想知道是否有更好的解决方案。
我将问题隔离为一个说明:
#include <QApplication>
#include <QDialog>
#include <QHBoxLayout>
#include <QLabel>
#include <QPushButton>
#include <QSpacerItem>
class MainFrame : public QDialog
{
public:
MainFrame() : QDialog(NULL)
{
QHBoxLayout* theLayout = new QHBoxLayout();
setLayout( theLayout );
// don't want to add spacers all the time!
//theLayout->addSpacerItem( new QSpacerItem( 10, 10, QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding ) );
theLayout->addWidget( new QLabel( "A text", this ) );
theLayout->addWidget( new QPushButton( "A button", this ) );
// don't want to add spacers all the time!
//theLayout->addSpacerItem( new QSpacerItem( 10, 10, QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding ) );
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainFrame w;
w.resize(400,400);
w.show();
return a.exec();
}
没有垫片,它看起来像这样:
我讨厌这个显示器,QWidget
你的眼睛必须在小部件周围四处寻找相关信息。
使用垫片,它的外观如下:
我更喜欢它。
有没有办法在不添加垫片的情况下做到这一点?添加它们并且总是必须指定所有这些参数是一件痛苦的事情(默认值不会做你想要的......)。
我尝试使用QLayout::setSizeConstraint
没有成功。似乎不打算这样做。