请教个Qt相关问题:对于QSlider如何自定义设置滑块滑动区域?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教个Qt相关问题:对于QSlider如何自定义设置滑块滑动区域?相关的知识,希望对你有一定的参考价值。

参考技术A QSlider *qs=new QSlider(this);
qs->setGeometry(20,50,20,100);
qs->setRange(0,100); //设定最大值最小值
qs->setMinimum(0);qs->setMaximum(100); //分开设定最大值,最小值

如何在 QVBoxLayout 中显示 QString

【中文标题】如何在 QVBoxLayout 中显示 QString【英文标题】:How to show a QString in a QVBoxLayout 【发布时间】:2014-07-22 09:46:52 【问题描述】:

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

现在滑块可以正常工作,但我无法显示文本。无论如何,我对这样的事情一无所知。我怎样才能在 QVBoxLayout 中显示一个字符串?

【问题讨论】:

【参考方案1】:

怎么了?

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

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

【讨论】:

非常感谢。我会尽快验证您的回答。 Visual Studio 2013 中设计器的使用相当复杂。 哦...如果 Qt 将来让您感到惊讶,也许您可​​以考虑使用 Qt creator 作为开发 Qt 小部件的 IDE。 Ui 设计器和代码编辑器之间来回切换的能力非常有帮助。

以上是关于请教个Qt相关问题:对于QSlider如何自定义设置滑块滑动区域?的主要内容,如果未能解决你的问题,请参考以下文章

QSlider - 如何为空间着色

如何在 Qslider 上的自定义位置放置刻度?

Qt 自定义插槽

QT中,我想使用QSlider设置的值,应该怎么写信号槽?

Qt的高手,向你们请教下: 先谢谢了。我用Qt designer 设计了一个简单的ui ,想自定义一个简单的槽,不会

请教QT中的slider控件的鼠标点击事件