我是Qt编程的新手。我正在尝试对名为QELabel的epicsQt小部件提供的一些值进行简单的减法,该小部件只读取EPICS通道的值。我想从两个QELabel中减去值并将其打印到另一个QELabel。但是,我正在'未定义参考'这些错误 - >
MainWindow::on_ShutterOpen_dbValueChanged(QString const&)
void MainWindow::on_TopShutter_dbValueChanged(const QString &out)
{
double top,bottom,open;
top=ui->TopShutter->text().toDouble();
bottom=ui->BottomShutter->text().toDouble();
open=top-bottom
ui->ShutterOpen->setText(Qstring::number(open));
}
这是mainwindow.cpp的一点(我跟着这个youtube video的例子,特别是大约15分钟之后)
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_qelabel_dbValueChanged(const QString &out);
void on_ShutterOpen_dbValueChanged(const QString &out);
void on_TopShutter_dbValueChanged(const QString &out);
private:
Ui::MainWindow *ui;
};
#endif //MAINWINDOW_H
我正在使用QTCreator,所以我没有在其他论坛中看到的常见错误。我在头文件中声明了插槽,MainWindow设置为Q_Object(这是整个mainwindow.h文件):
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
因为它们很短,而且为了完整性,这里是main.cpp,然后是.pro
#-------------------------------------------------
QT += core gui xml
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = FirstWeatherAlarm
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
LIBS += -L/usr/lib64/qt5/plugins/designer -lQEPlugin
INCLUDEPATH += /home/jchavez/epicsqt/3.1.0/framework/include
HEADERS += mainwindow.h
FORMS += mainwindow.ui
和FirstWeatherAlarm.pro:
qmake
我是否在所有文件的开头声明了所有内容?缺少什么让我的插槽不对?我在gui中创建了插槽,使用我的QELabel上的“右键单击”,然后选择“Go to Slot”,所以我认为所有的格式都是正确的。正如我一直在编辑的那样,我还运行make clean
和awk
,这是我在论坛上看到的其他答案。但没有任何工作。
答案 0 :(得分:3)
问题在于两个插槽:
MainWindow::on_qeLabel_dbValueChanged(QString const&)
MainWindow::on_ShutterOpen_dbValueChanged(QString const&)
它们在MainWindow.h文件中声明并在项目中的某处使用(否则您不会收到错误)。
但是它们没有在mainwindow.cpp中实现。您应该向此文件添加实现,错误将消失。
您已实施
void MainWindow::on_TopShutter_dbValueChanged(const QString &out)
在mainwindow.cpp中,您可以为另外两个插槽添加实现。将插槽视为一种功能。并阅读有关信号/插槽的更多信息。