gpt4 book ai didi

c++ - Qt 无法给 QLabel 赋值

转载 作者:行者123 更新时间:2023-11-28 06:12:46 26 4
gpt4 key购买 nike

我喜欢一开始就说我和他们一样菜鸟。这是我从头开始构建的第一个 C++ 程序。我解决了大部分错误,但是我似乎无法为 QLabel 赋值。我希望在按下计算按钮时调用函数“值”。然后函数“value”应该进行数学运算并返回答案,然后将其分配给 QLabel“results”。这是我目前所拥有的。

#include <QApplication>
#include <QPushButton>
#include <QLabel>
#include <QSlider>
#include <QString>
#include <QSpinBox>
#include <QHBoxLayout>
#include <QComboBox>
double x;

double value(QSpinBox *spinner)
{
int speed;
speed = spinner->value();
x = speed/8;

return x;
}
int main(int argc, char *argv[])
{




QApplication prog(argc, argv);


QWidget *mainWindow = new QWidget;
mainWindow->setWindowTitle("Plex Calculator");

QPushButton *calculate = new QPushButton("Calculate");
QComboBox *kbormb = new QComboBox;
QSpinBox *spinner =new QSpinBox;
QSlider *slider = new QSlider(Qt::Horizontal);
QLabel *results = new QLabel;

spinner->setRange(1,1000);
slider->setRange(1,1000);
spinner->setValue(1);

QObject::connect(spinner, SIGNAL(valueChanged(int)),slider, SLOT(setValue(int)));
QObject::connect(slider, SIGNAL(valueChanged(int)),spinner, SLOT(setValue(int)));


kbormb->addItem("kb/s");
kbormb->addItem("mb/s");

QHBoxLayout *layout = new QHBoxLayout;

layout->addWidget(slider);
layout->addWidget(spinner);
layout->addWidget(kbormb);
layout->addWidget(calculate);
layout->addWidget(results);

QObject::connect(calculate, SIGNAL(clicked()), &prog, SLOT(results->setNum(value(*spinner));));


mainWindow->setLayout(layout);
mainWindow->show();

return prog.exec();
}

最佳答案

问题在于以下信号槽连接。

QObject::connect(calculate, SIGNAL(clicked()), &prog, SLOT(results->setNum(value(*spinner));));

您正在尝试将 calculate 按钮的 clicked() 信号连接到 results->setNum(value(*spinner)); prog 的插槽。但是 results->setNum(value(*spinner)); 实际上不是一个插槽。

插槽只是继承QObject 的类中的一个方法。应在类中的 slots: 部分下添加方法。阅读有关信号和槽的更多信息 here .

要解决这个问题,您必须为您的小部件创建一个单独的类并添加它们的逻辑。您可以向新创建的类添加一个槽,并将 clicked() 信号连接到该槽。然后就可以在槽中进行计算了。

关于c++ - Qt 无法给 QLabel 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30928224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com