我正在使用一个QListWidget,它填充了我自己的自定义菜单项小部件的实例。菜单项小部件由带有QHBoxLayout的QWidget和几个QLabel组成。
我对所有事情感到满意,除了QHBoxLayout似乎接管我的小部件的大小,缩小我的小部件高度以使其适合其中包含的标签。我希望菜单项小部件是一个恒定的大小,只是让QHBoxLayout水平排列它的子项,它让我疯狂,它接管了小部件的高度!
有没有人有任何想法?我在我的菜单项QWidget中尝试了以下内容:
this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
this->resize(10, 30);
希望忽略(并扩展)10并且30将保持固定,但小部件的尺寸要小得多。
谢谢!
马龙
答案 0 :(得分:1)
调整大小 - 更改窗口小部件的几何图形 - 不是您使用Fixed
尺寸策略的方式。您需要在自己重新实现QSize sizeHint() const
时给出固定大小。将以下内容添加到窗口小部件:
class MyWidget : public QWidget {
...
protected:
QSize sizeHint() const { return QSize(10, 30); }
...
};
Per Qt自己的文档:
QSizePolicy::Fixed
QWidget::sizeHint()
是唯一可接受的替代方案,因此小部件永远不会增长或缩小(例如按钮的垂直方向)。
答案 1 :(得分:0)
所以基本上你希望Qlabels在QHBoxLayout而不是完整的小部件? 如果是这种情况,那么您只需将QLabel添加到QHBoxLayout并将其添加到菜单项小部件(不要使用QHBoxLayout设置菜单项小部件)
答案 2 :(得分:0)
未经测试,但也许是一个想法:layout->setSizeConstraint( QLayout::SetNoConstraint )
可能与widget->setFixedHeight()
结合使用。祝你好运!