我试图在QSLider之前放置一个标题,以便用户知道QSlider的用途。我在一个QSlider的QDialog框中设置了两个QVBoxLayout,如下所示:
QSlider * slider1 = new QSlider(Qt::Horizontal);
QSlider * slider2 = new QSlider(Qt::Horizontal);
QDialog * opts = new QDialog;
QVBoxLayout * layout = new QVBoxLayout;
layout->addWidget(Qstring("Label for Slider 1"));
layout->addWidget(slider1);
layout->addWidget(QString("Label for Slider 2"));
layout->addWidget(slider2);
opts->setLayout(layout);
opts->show();现在滑块工作得很好,但我不能显示文本。不管怎么说,我对这件事一无所知。如何在QVBoxLayout中显示字符串?
发布于 2014-07-22 09:53:36
怎么了?
不能像那样直接添加QString,因为QString只是一个方便的字符串操作类,它不负责UI显示。
解决方案:
需要一个QLabel实例来保存您的QString
QLabel *label_1 = new QLabel(this);
label_1->setText("Label for Slider 1");
layout->addWidget(label_1);
layout->addWidget(slider1);更好的布局:
此外,您还可以考虑使用nested layout:创建一个包含一个QLabel和一个QSlider的新水平布局,然后将布局添加到对话框布局中。
以下是代码:
QSlider * slider1 = new QSlider(Qt::Horizontal);
QSlider * slider2 = new QSlider(Qt::Horizontal);
QDialog * opts = new QDialog;
QVBoxLayout * layout = new QVBoxLayout; // layout for Dialog itself
QHBoxLayout * layout_1 = new QHBoxLayout(this); // layout for slider1 & label1
QHBoxLayout * layout_2 = new QHBoxLayout(this); // layout for slider2 & label2
QLabel *label_1 = new QLabel(this);
QLabel *label_2 = new QLabel(this);
label_1->setText("Label for Slider 1");
label_2->setText("Label for Slider 2");
layout_1->addWidget(label_1);
layout_1->addWidget(slider1); // [Label_1][Slider1]
layout_2->addWidget(label_2);
layout_2->addWidget(slider2); // [Label_2][Slider2]
layout->addLayout(layout_1);
layout->addLayout(layout_2);
opts->setLayout(layout);
opts->show();我强烈建议您使用designer部署小部件布局。
https://stackoverflow.com/questions/24884021
复制相似问题