2014-03-04 49 views
1

我在我的項目中使用Qt,並且在訪問其他類的ui標籤時遇到一些困難,我擁有mainwindow和Yar類,如下所示。在qt上寫上來自不同類的ui標籤

mainwindow.h

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QMainWindow> 
#include "yar.h" 
namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
Q_OBJECT 

public: 
explicit MainWindow(QWidget *parent = 0); 
~MainWindow(); 
Yar b; 


private: 
Ui::MainWindow *ui; 

public slots: 
void dispal(); 


private slots: 
void on_pushButton_clicked(); 
}; 

#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); 
QObject::connect(ui->pushButton,SIGNAL(clicked()),&b,SLOT(lll())); 
} 

MainWindow::~MainWindow() 
{ 
delete ui; 
} 


void MainWindow::dispal(){ 

ui->label->setText("hello"); 
} 

Yar.h

#ifndef YAR_H 
#define YAR_H 

#include <QObject> 


class Yar : public QObject 
{ 
Q_OBJECT 
public: 
explicit Yar(QObject *parent = 0); 

public slots: 
void lll(); 

}; 

#endif // YAR_H 


void MainWindow::on_pushButton_clicked() 
{//ui->label->setText("hello"); 

    //b.wrrrot(); 
//dispal(); 
} 

Yar.cpp

#include "yar.h" 
#include <iostream> 
Yar::Yar(QObject *parent) : 
QObject(parent) 
{ 
//setupUi(this); 

//QObject::connect(&a, SIGNAL(dis), &a, SLOT(dispal())); 
//emit wrrrot(); 
} 

void Yar::lll(){ 
//emit wrrrot(); 
std::cout<<"gfggdf"<<std::endl; 
} 

在我的gui中,我有一個按鈕和一個標籤,我用Yar類的lll()函數連接了按鈕,當我點擊按鈕時,它在控制檯中顯示gfggdf但我想在ui中顯示此文本標籤,你能幫我我怎樣才能顯示我的數據在ui標籤從函數lll();

+1

爲什麼需要通過'Yar'類修改標籤文本,如果可以直接使用? – vahancho

+0

因爲按鈕就像一個初始化,當我點擊按鈕時,函數lll()會執行不同的調用並顯示結果..這就是爲什麼我需要通過Yar修改標籤。 – nabeel

回答

0

一種可能的解決方案是從亞爾:: LLL(),即

emit updateLabelText("your text"); 

發射信號並將該信號連接到在主窗口處理GUI(變化標籤與給定的文本)的插槽。

+0

謝謝你的回答,我已經接受你的答案,因爲我在閱讀你的答案之前已經嘗試過這件事,並且它正在工作。 – nabeel

相關問題