У меня есть диалог QT, который должен иметь доступ из любой точки программы. В принципе, мне нужно сделать что-то вроде создания статического экземпляра его где-то в моей программе, что-то вроде:Как я могу глобально получить доступ к диалоговому окну QT из любого класса
'' 'Note' '': Это просто пример того, что я пытаюсь сделать, а не фактический код (который слишком долго, чтобы разместить здесь)
class Core
{
public:
static DialogType *MyDialog;
};
DialogType *Core::MyDialog = NULL;
// later in main.cpp
int main(int argc, char *argv[])
{
try
{
Core::Init();
QApplication a(argc, argv);
Core::MyDialog = new DialogType();
...
Однако, несмотря на это будет работать для любого другого типа, он просто не работает для классов, наследуемых от QDialog. Компилятор просто возвращает: DialogType не называет тип (и да, я делаю #include, что .h файл с объявлением DialogType)
Что я делаю неправильно? Почему QT этого не позволяет? Как я могу позволить получить доступ к одному экземпляру моего диалога из любого класса в любом месте программы?
Я не понимаю, почему он не компилируется, но он, безусловно, не работает во время выполнения: вы не можете создавать виджеты перед экземпляром QApplication, поэтому инициализация не будет работать. Создание по требованию с использованием функции доступа должно работать, хотя (хотя и ужасный дизайн) –
Ну, это был просто пример, ведь в моем коде я определяю его как NULL, позже в моем коде инициализирую его, однако он не работает ни – Petr
@FrankOsterfeld Я обновил код, чтобы он больше отражал то, что у меня есть, кроме того, я не понимаю причину downvote, что не так на вопрос? Я сомневаюсь, что я единственный, кому это нужно – Petr