QT新建Qt Widgets Application项目,需要修改ui控件属性,得在mainwindow这个类中进行修改,如,ui->myQLabel->setText(“this is q1!”)等等,那么怎么在分离出去的类中进行修改呢?下面是一种很好的方法。
开始代码:
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "ChangeUI.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
ChangeUI * m_changeUI;
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "MainWindow.h"
#include "ui_MainWindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
/*
* 实例化对象
* 将控件指针赋值给对象中定义的指针,想改变控件属性,就直接在对象中进行操作就可以了。
*/
m_changeUI = new ChangeUI();
m_changeUI->m_q1 = ui->Q1;
m_changeUI->m_q2 = ui->Q2;
m_changeUI->m_q3 = ui->Q3;
m_changeUI->startChange();
}
ChangeUI.h
#ifndef CHANGEUI_H
#define CHANGEUI_H
#include <QLabel>
class ChangeUI
{
public:
ChangeUI();
void startChange();
public:
/*
* 定义几个QLabel指针
* 这个是将mainwindow中的控件指针赋值给他们的
* 就是将 m_q1 = ui->Q1(在mainwindow中进行)
*
*/
QLabel* m_q1;
QLabel* m_q2;
QLabel* m_q3;
};
#endif // CHANGEUI_H
ChangeUI.cpp
#include "ChangeUI.h"
ChangeUI::ChangeUI()
{
}
void ChangeUI::startChange()
{
/*
* 对m_q1设置参数就是对 ui->Q1进行属性设置。
*
*/
m_q1->setText("this is q1!");
m_q2->setText("this is q2!");
m_q3->setText("this is q3!");
}
上述就是一个简短的案例了,一般项目都有好多个类,好多个控件操作,初学者就需要好好的推敲琢磨怎么才能运用的更加好了。
上面的方法是将指针赋值的方法,那么我们也可以通过信号和槽的方式进行控件属性的修改,大体意思,就是在其他类中计算出一个值,发个信号到mainwindow中,信号中携带相应参数,mainwindow接受到信号执行槽函数,槽函数中用ui->Q1->setText(“携带的参数”),这种方式进行控件属性的修改,具体可以参考下面这篇文章。进入 “QT,其他类中计算出的结果如何在ui界面的控件中显示?”