📜  qt 窗口底栏 - C++ (1)

📅  最后修改于: 2023-12-03 15:19:38.624000             🧑  作者: Mango

QT 窗口底栏 - C++

在 QT 中,窗口底栏(也称为状态栏)可以用来显示应用程序的状态信息、提示等等。本文将介绍如何在 QT 中创建和使用窗口底栏。

创建窗口底栏

在 QT 中创建窗口底栏很简单,只需在窗口的构造函数中添加以下代码:

QStatusBar* statusBar = new QStatusBar(this);
setStatusBar(statusBar);

这里创建了一个 QStatusBar 对象,并将其设置为主窗口的状态栏。注意,setStatusBar 方法是在 QWidget 类中定义的,因此只能在 QWidget 的子类中使用。

如果需要从 QMainWindow 的子类中创建状态栏,可以直接调用该类的 statusBar 方法:

QMainWindow* mainWindow = new QMainWindow();
QStatusBar* statusBar = mainWindow->statusBar();
在窗口底栏上显示消息

一般情况下,应用程序需要在状态栏上显示一些消息或提示。我们可以通过 QStatusBar 类的 showMessage 方法来实现:

statusBar->showMessage("This is a message", 5000); // 显示 5s

showMessage 方法的第一个参数是要显示的消息,第二个参数是消息显示的时间(以毫秒为单位),默认为 0,表示消息会一直显示直到调用 clearMessage 方法清除为止。

在窗口底栏上添加控件

有时,我们需要在窗口底栏上添加一些控件,以便用户与应用程序进行交互。这可以通过调用 QStatusBar 类的 addWidget 方法来实现:

QLabel* label = new QLabel("This is a label");
statusBar->addWidget(label);

上述代码创建了一个 QLabel 控件,并将其添加到了状态栏中。

清除窗口底栏上的消息和控件

当需要清除状态栏上的消息或控件时,可以使用 QStatusBar 类的以下方法:

statusBar->clearMessage(); // 清除消息
statusBar->removeWidget(label); // 移除控件
示例代码

下面是一个完整的示例代码:

#include <QMainWindow>
#include <QStatusBar>
#include <QLabel>

class MainWindow : public QMainWindow
{
public:
    MainWindow(QWidget* parent = nullptr) : QMainWindow(parent)
    {
        QStatusBar* statusBar = new QStatusBar(this);
        setStatusBar(statusBar);

        QLabel* label = new QLabel("This is a label");
        statusBar->addWidget(label);

        statusBar->showMessage("This is a message", 5000);
    }
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    MainWindow mainWindow;
    mainWindow.show();

    return app.exec();
}
总结

本文介绍了如何在 QT 中创建和使用窗口底栏。通过 QStatusBar 类,我们可以在窗口底栏上显示消息、添加控件等。使用窗口底栏可以让应用程序更加用户友好,提高用户体验。