QLabel占用太多空间

dai*_*isy 10 qt qt4

我在QStackedWidget中使用QLabel和QPLineEdit,QLable应该接近持有​​此小部件的窗口的大小.

但是当我为QLabel设置一个超长文本时,它会扩展太多,而且我无法横向缩小窗口大小,最小宽度太大.

我已经设置了这三个小部件的大小政策Minimum,它对我来说不起作用.

UPDATE

也许最好这样说:当没有足够的空间时,如何让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();
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*Mat 12

如果我理解正确,最简单的方法就是忽略该标签的水平尺寸提示.
只要你有其他小部件(或手动强制最小宽度到容器),这应该做你想要的:

#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();
}
Run Code Online (Sandbox Code Playgroud)