一、新建qt程序,界面如图所示:
二、在.h文件中:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <qDebug>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
signals:
void signal_data(QString);
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
static MainWindow* getInstance();
private slots:
void on_pushButton_2_clicked();
void slot_ReceiveData(QString);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
三、在.cpp文件中加入:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <Windows.h>
#include <stdio.h>
MainWindow* instance;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
instance = this;
//绑定信号和槽
connect(this,SIGNAL(signal_data(QString)),this,SLOT(slot_ReceiveData(QString)));
}
MainWindow::~MainWindow()
{
delete ui;
}
//建立自身调用
MainWindow *MainWindow::getInstance()
{
qDebug()<<"3333";
return instance;
}
//普通函数
void showLab()
{
qDebug()<<"111";
QString str = "234";
qDebug()<<"222";
MainWindow::getInstance()->signal_data(str);
}
void MainWindow::slot_ReceiveData(QString data)
{
qDebug()<<"data"<<data;
ui->label->setText(data);
ui->pushButton_3->setEnabled(false);
ui->textEdit->setText("234");
}
void MainWindow::on_pushButton_2_clicked()
{
showLab();
}
四:在main函数中:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
以上就是解决的方法,通过建立自身类的指针,进行调用自身的成员函数,同时也就解决了qt中普通函数无法调用界面中的控件的问题