如何从旋转框中获取用户输入并将其用作值?换句话说,如果我想将QSpinBox的输入存储到变量中,我将如何进行此操作。我是Qt GUI的新手,所以任何输入都会非常感激。
答案 0 :(得分:1)
要对Qt中的GUI元素作出反应,您可以连接这些元素发出的信号。此外,如果您有指向它实例的指针,则可以查询并更改其状态和属性。
以下是您正在寻找的内容的快速示例
#include <QApplication>
#include <QVBoxLayout>
#include <QLabel>
#include <QSpinBox>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// The widget, contains a layout
QWidget * w;
w = new QWidget;
// The layout arranges and holds
// all the children of the widget
QVBoxLayout * vbox;
vbox = new QVBoxLayout;
// The user input element, the spinbox!
QSpinBox * spinbox;
spinbox = new QSpinBox();
spinbox->setValue(5);// example of using a pointer to edit its states
// now add it to the layout
vbox->addWidget(spinbox);
// add in an element to connect to,
// the infamous QLabel
QLabel * label;
label = new QLabel("spinbox output");
// add it also to the layout
vbox->addWidget(label);
// connection can happen anytime as long as the two elements
// are not null!
// This connection takes advantage of signals and slots
// and making their connection at runtime.
// if a connect call fails you should be able to see why in the
// application output.
QObject::connect(spinbox, SIGNAL(valueChanged(QString)),
label, SLOT(setText(QString)));
// associate the layout to the widget
w->setLayout(vbox);
// make the widget appear!
w->show();
return a.exec();
}
我通常将GUI元素的大部分初始化和连接放入构造函数或主QWidget
或QMainWindow
的方法中。我经常从GUI输入元素中获取信号,比如一个旋转框,我将它连接到我的子类QWidget
上定义的自定义插槽。然后,如果我想用不同的输入值显示它或者将输出增加2,我可以很容易地做到这一点。
// in the constructor of my Widget class
// after spinbox has been initialized
QObject(m_spinbox, SIGNAL(valueChanged(int)),
this, SLOT(on_spinboxValueChanged(int)));
void Widget::on_spinboxValueChanged(int i)
{
// here m_label is a member variable of the Widget class
m_label->setText(QString::number(i + 2));
// if accessing the value in this function is inconvenient, you can always
// use a member variable pointer to it to get its stored value.
// for example:
int j = m_spinbox->value();
qDebug() << "Spinbox value" << j;
}
在QML和Qt Quick中可以完成相同的事情,对于很多人来说,它更容易,更直观,因为它与javascript和css有多接近。
此外,Qt Creator还有一个生成表单的工具,它提供了另一种使用布局创建窗口小部件的方法,然后当您访问元素时,可以通过ui
变量来完成。
此外,Qt文档和示例非常棒。花时间学习它们并阅读它们是非常值得的。
希望有所帮助。