Qt доступ к объекту просмотра в каждом классе? - PullRequest
0 голосов
/ 27 августа 2018

У меня есть объект индикатора выполнения (ui-> QprogressBar), доступный в моем mainwindow.cpp. Но я хочу использовать этот объект в другом классе (readerfile.cpp).

Заголовки

mainwindow.h

demo.h

Источники

mainwindow.cpp

demo.cpp

Я использую этот метод для вызова объекта большую часть времени: - Используя вызов функции, например -mainwindow.cpp, я буду вызывать эту функцию

mainwindow->isFunction(ui->QprogressBar);

isFunction доступна в моем файле demo.cpp

void demo :: isfunction (QProgressBar *progress)

Но теперь я хочу использовать объект QprogressBar прямо внутри моего файла demo.cpp. Я перепробовал все возможные комбинации, соединения и просто не могу заставить его работать. Так может кто-нибудь объяснить мне, как получить доступ к объекту элементов пользовательского интерфейса из класса demo.

Любая идея для решения будет отличной помощью. Благодарю.

1 Ответ

0 голосов
/ 28 августа 2018

Чтобы получить указатель на объект из другого класса, вам нужно реализовать публичную функцию, которая возвращает этот указатель. Я приведу небольшой пример:

Ваш класс MainWindow в заголовочном файле будет содержать функцию progressbar().

mainwindow.h

//...
class MainWindow : public QMainWindow
{
   Q_ObBJECT
public:
   QProgressBar *progressbar();   //returns a pointer to the QProgressBar
   //..
private:
   //..
};

Эта функция реализована в mainwindow.cpp следующим образом:

QProgressBar *MainWindow::progressbar()
{
return ui->progbar;    //I just called it like this to avoid confusion, it's the just the name you defined using QtDesigner
}

Затем, в demo.hpp, если у вас есть экземпляр MainWindow в вашем классе:

//..
class Demo : public QObject
{
   Q_OBJECT
public:
   //..
private:
   MainWindow *window;
   //..
}

Вы можете просто получить доступ к QProgressBar, используя вызов функции demo.cpp:

QProgressBar *bar;
bar = window->progressbar(); 

Я должен сказать, что необычно иметь экземпляр MainWindow в другом классе. Обычно ваши QMainWindow или QApplication являются основной точкой входа в программу, и у вас есть экземпляры других классов, а не наоборот.

...