Qt QLabel占用了太多的空间

Qt QLabel占用了太多的空间,qt,qt4,Qt,Qt4,我在QStackedWidget中使用QLabel和QPLineEdit,QLable的大小应该接近容纳此小部件的窗口的大小 但是,当我将超长文本设置为QLabel时,它的扩展太大了,并且我无法水平减小窗口大小,最小宽度太大了 我已经将这三个小部件的大小策略设置为最小值,这对我来说根本不起作用 更新 #include <QtGui> int main ( int argc , char **argv ) { QApplication app (argc , argv)

我在QStackedWidget中使用QLabel和QPLineEdit,QLable的大小应该接近容纳此小部件的窗口的大小

但是,当我将超长文本设置为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();
}
也许这样说更好:当没有足够的空间时,如何让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显示更多。您必须发布代码的相关部分。如果您使用的是简单的布局,那么当您向标签添加文本时,父窗口小部件不应该增长——至少在这里的简单测试中不会发生这种情况。