c++ - 如何在 QVBoxLayout 中显示 QString

标签 c++ qt

我试图在 QSLider 之前加上一个标题,以便用户知道 QSlider 的用途。 我在 QVBoxLayout 上的 QDialog Box 中有 2 个 QSlider,如下所示:

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();

现在 slider 工作正常,但我无法显示文本。而且我绝对没有发现任何关于这样的事情,无论如何。我怎样才能在 QVBoxLayout 中显示一个字符串?

最佳答案

怎么了?

不能那样直接添加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();

附言我强烈建议您使用设计器来部署您的小部件布局。

关于c++ - 如何在 QVBoxLayout 中显示 QString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24884021/

相关文章:

c++ - 指向 char* 值的指针中的问题

c++ - 关联矩阵 C++ 太大

c++ - QPropertyAnimation 不工作

c++ - QWT 安装错误

c++ - glReadPixels 无效使用成员(你忘记了 '&' 了吗?)

linux - phpstorm 和 qt 共享内存段泄漏

python - opencv.groupRectangles() c++ 和 python 层之间的差异

c++ - 来自 glGetError() 的 INVALID_ENUM 错误。 glGetError 与 glu、glew、glfw?

c++ - 在 C++ 中使用套接字进行文件传输

winapi - QT (4) 对应 Win32 API 的等效宏/方法/常量?