我在QStackedWidget中使用QLabel和QPLineEdit,QLable应该与持有此小部件的窗口大小差不多。
但是当我为QLabel设置一个超长的文本时,它会扩展太多,而且我无法横向缩小窗口大小,最小宽度太大。
我已将这三个小部件的大小政策设置为Minimum
,这对我来说无效。
更新
也许最好这样说:当空间不足时,如何让QLabel显示部分文字
示例代码
#include <QtGui>
int main ( int argc , char **argv )
{
QApplication app (argc , argv);
QWidget w;
QLabel *label = new QLabel ("Very very very long text");
label->setSizePolicy (QSizePolicy::Minimum , QSizePolicy::Fixed);
QVBoxLayout layout (&w);
layout.addWidget ( label );
w.show();
return app.exec();
}
答案 0 :(得分:11)
如果我理解正确,最简单的做法就是忽略该标签的横向尺寸提示 只要你有其他小部件(或手动强制容器的最小宽度),这应该做你想要的:
#include <QtGui>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QLabel *l1 = new QLabel("This very long text doesn't influence "
"the width of the parent widget");
l1->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Fixed);
// Style just to make it clear that the widget is
// being resized to fit the parent, it doesn't "overflow"
l1->setFrameShape(QFrame::Box);
l1->setFrameShadow(QFrame::Raised);
l1->setAlignment(Qt::AlignHCenter);
QLabel *l2 = new QLabel("This influences the width");
l2->setFrameShape(QFrame::Box);
l2->setFrameShadow(QFrame::Raised);
QWidget w;
QVBoxLayout layout(&w);
layout.addWidget(l1);
layout.addWidget(l2);
w.show();
return app.exec();
}