显示未显示QT其他类的文本框



我已经做了一个ddisplay类,以在GUI文本框上显示我的数据,但是我有一些奇怪的情况,当我从MainWindow类中调用功能时,它工作正常,但是当我尝试尝试时调用其他班级的相同功能,它不起作用。以下是我的程序

的小型代码

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <ddisplay.h>
#include <QMainWindow>
#include "test.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
DDisplay b;
Test c;
private slots:
void display(const QString &a);
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
};

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QObject::connect(&b,SIGNAL(display(QString)),this,SLOT(display(QString)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::display(const QString &a){
ui->textBrowser->setText(a);
}
void MainWindow::on_pushButton_clicked()
{
 b.printf("hello"); //this function working fine
//c.printf("lllll"); //not working
}

test.h

#ifndef TEST_H
#define TEST_H
#include <QString>
#include <ddisplay.h>
class Test
{
public:
Test();
void printf(const QString &a);
DDisplay b;
};

test.cpp #include" test.h"

Test::Test()
{
}
void Test::printf(const QString &a){
b.printf(a);
}

ddisplay.h #include

class DDisplay : public QObject
{
Q_OBJECT
public:
explicit DDisplay(QObject *parent = 0);
void printf(const QString &a);
QString b;
signals:
void display(const QString &a);
public slots:
};

ddisplay.cpp #include" ddisplay.h"

DDisplay::DDisplay(QObject *parent) :
QObject(parent)
{
}
void DDisplay::printf(const QString &a)
{
b+=a;
emit display(b);
}

c.printf("lllll"); //not working

它不起作用,因为您没有此对象的连接。测试类中的ddisplay是一个比MainWindow中的实例。

在下面的评论中,您的问题的一种可能解决方案是在main.cpp或专门的初始化类中连接ddisplay的信号和mainwindow的插槽。

最新更新