Qt 中程序全局信息如何显示到主窗口状态栏,不同dialog的状态信息显示到MainWindow中的状态栏
时间: 2023-11-22 11:53:33 浏览: 139
在 Qt 中,可以使用 QMainWindow 类来创建主窗口,状态栏是 QMainWindow 的一个子部件,可以使用 QMainWindow::statusBar() 函数获取到状态栏对象,然后调用 QStatusBar::showMessage() 函数来更新状态栏信息。
如果要在不同的 dialog 中更新主窗口状态栏信息,可以将主窗口的指针传递给 dialog,然后在 dialog 中调用 QMainWindow::statusBar() 函数获取到状态栏对象,并更新状态栏信息。
以下是一个示例代码:
MainWindow.h:
```cpp
#include <QMainWindow>
#include <QStatusBar>
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
private:
QStatusBar *statusBar;
};
```
MainWindow.cpp:
```cpp
#include "MainWindow.h"
#include "MyDialog.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
statusBar = new QStatusBar(this);
setStatusBar(statusBar);
// 显示主窗口信息
statusBar->showMessage("MainWindow is ready");
}
```
MyDialog.h:
```cpp
#include <QDialog>
#include "MainWindow.h"
class MyDialog : public QDialog {
Q_OBJECT
public:
MyDialog(MainWindow *parent = nullptr);
private:
MainWindow *mainWindow;
};
```
MyDialog.cpp:
```cpp
#include "MyDialog.h"
MyDialog::MyDialog(MainWindow *parent)
: QDialog(parent)
, mainWindow(parent)
{
// 显示 dialog 的信息
setWindowTitle("MyDialog");
setModal(true);
// 更新主窗口状态栏信息
mainWindow->statusBar()->showMessage("MyDialog is ready");
}
```
在主窗口中创建 dialog 时,需要将主窗口的指针传递给 dialog:
```cpp
MyDialog *dialog = new MyDialog(this);
dialog->exec();
```
这样,当 dialog 显示时,主窗口的状态栏信息会更新为“MyDialog is ready”。
阅读全文