2014-02-26 1 views
0

조치가 수행 될 때 별도의 함수를 사용하여 GUI를 변경하고 싶습니다. 예를 들어Qt : 별도의 함수에서 ui 포인터를 사용하십시오.

: 여기에 메뉴 항목에 대한 내 코드를 클릭하고 있습니다 :

void MainWindow::on_actionImperial_triggered() 
{ 
    ui->actionMetric->setChecked(false); 
    ui->z_unit_label->setText("inches"); 
    void gui_change(); 
} 

내가 gui_change()를 호출 할 수있는 기능을 좋아하고, UI를 변경하는 것입니다.

void gui_change() 
{ 
    ui->pushButton_2->setStyleSheet("color:grey"); 
    ui->pushButton->setStyleSheet("color:green"); 
} 

이 Qt를 새로운 것으로, 오류 use of undeclared identifier 'ui' 결과, 난 인터넷 검색 및 스택은 함수의 범위에 포함되는 ui을 얻는 방법을 결정하기 위해 검색을 몇 시간을 보냈습니다, 그러나 성공하지 않았습니다.

답변

2

gui_change()를 MainWindow의 멤버 함수로 만들고 나서이를 void MainWindow::gui_change()으로 선언해야합니다.

단순히 void gui_change()으로 작성하면 클래스 또는 네임 스페이스의 일부가 아닌 독립 실행 형 함수입니다. (BTW, 이것은 Qt 문제가 아닌 C++ 이슈이다.)

+0

'public :','public slots :','private :',''private :''에서'mainwindow.h ' 'private slots :', 이것들은 앱이 컴파일되고 실행되도록 허용하지만 함수는 실행되지 않습니다. 그게 왜 일어날까요? 함수 내에서 함수가 호출되는 행으로 코드를 이동하면 잘 실행됩니다. – JimmyBanks

+1

@JimmyBanks하지만 'mainwindow.cpp'에서 멤버 함수로 만들었습니까? 'void gui_change()'로 선언하는 대신'void MainWindow :: gui_change()'로 선언하십시오. 또한'MainWindow :: on_actionImperial_triggered()'함수에서'void gui_change();'와 같이 호출하지 마십시오. 그냥'gui_change();'와 같이 호출하면됩니다. – thuga

관련 문제