Qt在每个类中访问查看器对象?

时间:2018-08-27 13:45:55

标签: c++ qt qprogressbar

我的mainwindow.cpp中有一个进度条对象(ui-> QprogressBar)。但是,我想在另一个类(readerfile.cpp)中使用此对象。

标题

mainwindow.h

demo.h

来源

mainwindow.cpp

demo.cpp

我大部分时间使用此方法来调用对象:-使用函数调用,例如-mainwindow.cpp,我将调用此函数

mainwindow->isFunction(ui->QprogressBar);

isFunction在我的demo.cpp文件中可用

void demo :: isfunction (QProgressBar *progress)

但是,现在我想直接在demo.cpp文件中使用QprogressBar对象。 我尝试了所有可能的组合,连接,但无法正常工作。 所以有人可以向我解释一下如何从类演示中访问UI元素对象。

任何解决方案的想法都会有很大的帮助。 谢谢。

1 个答案:

答案 0 :(得分:2)

要从另一个类获取指向对象的指针,您需要实现一个返回该指针的公共函数。我给你举个例子:

头文件中的类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的实例是不寻常的。通常,您的QMainWindowQApplication是程序的主要入口点,并且您在其中拥有其他类的实例,而不是相反。