QLabel占用太多空间

时间:2012-05-06 12:46:24

标签: qt qt4

我在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();
}

1 个答案:

答案 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();
}