Я хотел бы изменить GUI ui, используя отдельную функцию, когда действие происходит.
Например: вот мой код для щелчка элемента меню:
void MainWindow::on_actionImperial_triggered()
{
ui->actionMetric->setChecked(false);
ui->z_unit_label->setText("inches");
void gui_change();
}
Я хотел бы gui_change()
функцию gui_change()
и изменить ui.
void gui_change()
{
ui->pushButton_2->setStyleSheet("color:grey");
ui->pushButton->setStyleSheet("color:green");
}
Это приводит к ошибке use of undeclared identifier 'ui'
, являющегося новым для Qt, я потратил несколько часов на поиск в Google и поиск в Stack, чтобы определить, как заставить ui
находиться в рамках функции, но не удалось.
Вам нужно сделать gui_change() функцию-член MainWindow, а затем объявить ее как void MainWindow::gui_change()
.
Если вы просто напишите void gui_change()
, то это автономная функция, которая не является частью какого-либо класса или пространства имен. (Кстати, это вопрос C++, а не вопрос Qt)
mainwindow.h
подpublic:
затемpublic slots:
затемprivate:
затемprivate slots:
и это позволяет приложению компилироваться и запускаться, но функция не работает. Есть идеи, почему это будет? Если я перемещу код из функции в строку, где вызывается функция, она работает нормально.mainwindow.cpp
? Вместо того, чтобы объявлять его какvoid gui_change()
, объявите его какvoid MainWindow::gui_change()
. Также не называйте это так:void gui_change();
в вашей функцииMainWindow::on_actionImperial_triggered()
. Просто назовите это так:gui_change();
,