Qt QLabel占用了太多的空间
我在QStackedWidget中使用QLabel和QPLineEdit,QLable的大小应该接近容纳此小部件的窗口的大小 但是,当我将超长文本设置为QLabel时,它的扩展太大了,并且我无法水平减小窗口大小,最小宽度太大了 我已经将这三个小部件的大小策略设置为Qt QLabel占用了太多的空间,qt,qt4,Qt,Qt4,我在QStackedWidget中使用QLabel和QPLineEdit,QLable的大小应该接近容纳此小部件的窗口的大小 但是,当我将超长文本设置为QLabel时,它的扩展太大了,并且我无法水平减小窗口大小,最小宽度太大了 我已经将这三个小部件的大小策略设置为最小值,这对我来说根本不起作用 更新 #include <QtGui> int main ( int argc , char **argv ) { QApplication app (argc , argv)
最小值
,这对我来说根本不起作用
更新
#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();
}
也许这样说更好:当没有足够的空间时,如何让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();
}
#包括
int main(int argc,字符**argv)
{
QApplication应用程序(argc、argv);
qw;
QLabel*label=新的QLabel(“非常长的文本”);
标签->设置策略(QSizePolicy::Minimum,QSizePolicy::Fixed);
QVBoxLayout布局(&w);
layout.addWidget(标签);
w、 show();
返回app.exec();
}
如果我理解正确,最简单的方法就是忽略标签的水平尺寸提示。只要您有其他小部件(或手动强制容器具有最小宽度),这就应该满足您的要求:
#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();
}
#包括
int main(int argc,字符**argv)
{
QApplication应用程序(argc、argv);
QLabel*l1=新的QLabel(“这个很长的文本不会影响”
“父窗口小部件的宽度”);
l1->setSizePolicy(QSizePolicy::忽略,QSizePolicy::修复);
//样式只是为了明确小部件是
//调整大小以适应父级,不会“溢出”
l1->setFrameShape(QFrame::Box);
l1->setFrameShadow(QFrame::凸起);
l1->setAlignment(Qt::AlignHCenter);
QLabel*l2=新的QLabel(“这会影响宽度”);
l2->setFrameShape(QFrame::Box);
l2->setFrameShadow(QFrame::凸起);
qw;
QVBoxLayout布局(&w);
layout.addWidget(l1);
layout.addWidget(l2);
w、 show();
返回app.exec();
}
为什么不给标签设置一个最大宽度?@Mat它就像一个IM窗口,我不希望用户获得该应用程序的一个较大的“最小宽度”,所以为什么不为该标签设置一个最大宽度?@Mat,但是当窗口调整大小时,我希望QLabel显示更多。您必须发布代码的相关部分。如果您使用的是简单的布局,那么当您向标签添加文本时,父窗口小部件不应该增长——至少在这里的简单测试中不会发生这种情况。