QT 如何在其他类中修改UI控件的属性?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/leoeitail/article/details/77880042

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界面的控件中显示?”

猜你喜欢

转载自blog.csdn.net/leoeitail/article/details/77880042