我正在尝试将来自第二个QMainWindow的信号连接到主窗口。启动程序时,它没有说出有关连接问题的任何信息,但它不起作用。我对C ++和Qt不太熟悉,所以可能很简单。
我的代码包含一个Mainwindow,用作带有Start,stop,On,off按钮的SCADA。在第二个qmainwindow中,我创建了一个终端,您可以在其中键入,启动,停止......在那里,我想向我的MainWindow发出一个信号,该信号负责控制多个线程和窗口。问题是我无法连接到我的插槽。我在这里简单介绍这两段代码。
终端。 ħ
#ifndef TERMINAL__H
#define TERMINAL__H
#include <QMainWindow>
#include <QTextEdit>
#include <QLineEdit>
#include <QObject>
namespace Ui {
class Terminal_;
}
class Terminal_ : public QMainWindow
{
Q_OBJECT
public:
explicit Terminal_(QWidget *parent = 0);
~Terminal_();
signals:
void turnonPLC_terminal();
public slots:
void newline();
private:
Ui::Terminal_ *ui;
QTextEdit* mTerminal;
QLineEdit* mInput;
};
#endif // TERMINAL__H
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "terminal_.h"
#include "terminal_help.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
Terminal_ *terminal;
public slots:
void turnon_terminal();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
Mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "terminal_.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
terminal = new Terminal_(this);
connect(terminal, SIGNAL(turnonPLC_terminal()), this, SLOT(turnon_terminal()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::turnon_terminal(){
turnonPLC=1;
}
terminal_.cpp
#include "terminal_.h"
#include "ui_terminal_.h"
#include <QDockWidget>
#include <QWidget>
#include <QLineEdit>
QString on=("on");
Terminal_::Terminal_(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Terminal_)
{
ui->setupUi(this);
mTerminal = new QTextEdit();
setCentralWidget(mTerminal);
mInput = new QLineEdit();
QDockWidget* qdw = new QDockWidget;
qdw->setWidget(mInput);
addDockWidget(Qt::BottomDockWidgetArea, qdw);
connect (mInput, SIGNAL(returnPressed()),
this, SLOT(newline()));
}
Terminal_::~Terminal_()
{
delete ui;
}
void Terminal_::newline(){
QString command = mInput->text();
if (command==on){
emit turnonPLC_terminal();
}
}
由于
答案 0 :(得分:1)
代码中的信号槽部分工作正常。 (经过一些小修改后编译和测试)
进入&#34; on&#34; (不是如所写的那样)
Terminal_::newline()
名为turnonPLC_terminal()
的广告位被解雇,最后被解雇
void MainWindow::turnon_terminal()
被称为。{/ p>
但是,有一些小细节,头文件名为terminal_.h,而不是Terminal.h turnonPLC
未定义。终端是通过不显示创建的(没有show-call)。
我想,有一些很小的逻辑错误。尝试使用调试器或使用qDebug跟踪预期调用链。