QT基础 - 窗口&&弹窗

目录

零. 窗口简介

一. 普通窗口

二. 无边框窗口

三. 顶层窗口

四. 模态对话框

五. 非模态对话框

六. 消息对话框

七. 文件对话框

八. 颜色对话框

九. 进度对话框

十. 总结


零. 窗口简介

在 Qt中,普通窗口是指程序的整体界面,可以包含标题栏、菜单栏、工具栏、关闭按钮、最大最小化按钮等。窗口可以作为GUI程序的主要窗口,用于显示数据、接收用户输入和执行其他交互操作。

Qt中的窗口类包括QWidgetQDialogQMainWindow等。其中,QWidget是所有用户界面对象的基类,可以作为独立的窗口或其他窗口的子窗口;QDialog是对话框窗口的基类,用于执行短期任务或与用户进行互动;QMainWindow是主窗口的基类,通常包含菜单栏、工具栏和状态栏等。

创建普通窗口可以使用Qt Creator等集成开发环境,也可以通过编写代码实现。在代码中,可以使用QWidget或其他窗口类创建窗口对象,并设置窗口的属性和样式。例如,可以设置窗口的标题、大小、位置、背景颜色等。

窗口还可以设置为无边框或者置顶。通过设置窗口标志(Qt::WindowFlags),可以控制窗口的行为和外观,如是否显示边框、是否置顶等。

此外,窗口可以接收鼠标、键盘等事件,并通过信号和槽机制与其他对象进行交互。开发者可以在窗口类中定义信号和槽函数,以实现对窗口事件的响应和处理。

总的来说,普通窗口是Qt中构建GUI应用程序的重要组成部分,通过合理使用窗口类和设置窗口属性,可以创建出满足不同需求的窗口界面。

一. 普通窗口

在 Qt中,普通窗口是指程序的整体界面,可以包含标题栏、菜单栏、工具栏、关闭按钮、最大最小化按钮等。窗口可以作为GUI程序的主要窗口,用于显示数据、接收用户输入和执行其他交互操作。Qt中的窗口类包括QWidgetQDialogQMainWindow等。其中,QWidget是所有用户界面对象的基类,可以作为独立的窗口或其他窗口的子窗口;QDialog是对话框窗口的基类,用于执行短期任务或与用户进行互动;QMainWindow是主窗口的基类,通常包含菜单栏、工具栏和状态栏等。

以下是一个使用QMainWindow创建普通窗口的示例代码

#include <QApplication>
#include <QMainWindow>

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

    // 创建主窗口
    QMainWindow window;

    // 设置窗口标题
    window.setWindowTitle("My Main Window");

    // 显示窗口
    window.show();

    return app.exec();
}

效果图:

二. 无边框窗口

无边框窗口没有传统窗口的边框和标题栏等元素,通常具有更简洁和自定义程度更高的外观。

属性

  • Qt::WindowFlags:用于设置窗口的特性,如无边框属性。

方法

  • setWindowFlags(Qt::WindowFlags flags):设置窗口的标志以实现无边框等效果。

示例代码

#include <QApplication>
#include <QWidget>

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

    QWidget window;

    // 设置为无边框
    window.setWindowFlags(Qt::FramelessWindowHint);

    window.show();

    return app.exec();
}

效果图

三. 顶层窗口

顶层窗口是指没有父窗口的窗口,它通常是应用程序的主窗口或独立的对话框。在 Qt中,顶层窗口具有一些特殊的属性和行为。

属性

  • Qt::WindowFlags:用于设置窗口的标志,如窗口类型、边框样式、置顶等。
  • windowTitle:窗口的标题。
  • windowIcon:窗口的图标。

方法

  • setWindowFlags(Qt::WindowFlags flags):设置窗口的标志。
  • setWindowTitle(QString title):设置窗口的标题。
  • setWindowIcon(QIcon icon):设置窗口的图标。

示例代码

#include <QApplication>
#include <QWidget>

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

    QWidget window;

    // 设置为顶层窗口
    window.setWindowFlags(Qt::Window);

    // 设置窗口标题和图标
    window.setWindowTitle("顶层窗口示例");
    window.setWindowIcon(QIcon(":/icon.png"));

    window.show();

    return app.exec();
}

效果图:

四. 模态对话框


模态对话框会阻塞与该对话框无关的其他窗口交互,直到该对话框被关闭,用户必须先处理模态对话框才能继续操作其他部分。

模态对话框属性

  • 通常具有明确的模态标志。

模态对话框方法

  • exec():用于显示模态对话框并进入模态状态。

模态对话框示例代码

#include <QDialog>
#include <QPushButton>
#include<QApplication>

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

    QDialog dialog;
    QPushButton button("确定", &dialog);

    dialog.exec();

    return app.exec();
}

效果图:

五. 非模态对话框

非模态对话框不会阻塞其他窗口的交互,用户可以在不关闭它的情况下继续操作其他部分。

属性

  • 可能有一些与显示状态相关的属性。

方法

  • show():用于显示非模态对话框。

非模态对话框示例代码

#include <QDialog>
#include <QPushButton>
#include<QApplication>

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

    QDialog dialog;
    QPushButton button("确定", &dialog);

    dialog.show();

    return app.exec();
}

效果图:

六. 消息对话框

消息对话框是一种用于向用户显示信息、提示或询问的对话框。

属性

  • 通常有显示的文本内容、标题等属性。

方法

  • QMessageBox::information():显示信息提示对话框。
  • QMessageBox::warning():显示警告对话框。
  • QMessageBox::critical():显示严重错误对话框。
  • QMessageBox::question():显示询问对话框并返回用户选择(是、否等)。

示例代码

#include <QDialog>
#include <QPushButton>
#include<QApplication>
#include <QMessageBox>

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

    // 信息提示
    QMessageBox::information(nullptr, "信息", "这是一条信息");

    // 警告
    QMessageBox::warning(nullptr, "警告", "这是一个警告");

    // 询问
    if (QMessageBox::question(nullptr, "询问", "是否继续?") == QMessageBox::Yes) {
        // 用户选择了是
    } else {
        // 用户选择了否
    }

    return app.exec();
}

效果图:

七. 文件对话框

文件对话框用于让用户选择文件或目录,它提供了直观的界面方便用户进行文件操作。

属性

  • QFileDialog::Options:可以设置一些选项,如是否显示隐藏文件等。

方法

  • getOpenFileName():获取用户选择的单个文件路径。
  • getOpenFileNames():获取用户选择的多个文件路径。
  • getExistingDirectory():获取用户选择的目录路径。

示例

#include <QApplication>
#include <QFileDialog>
#include <QDebug>

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

    // 获取单个文件路径
    QString filePath = QFileDialog::getOpenFileName(nullptr, "选择文件", "", "Text Files (*.txt);;All Files (*)");
    if (!filePath.isEmpty()) {
        qDebug() << "选择的单个文件路径:" << filePath;
    }

    // 获取多个文件路径
    QStringList filePaths = QFileDialog::getOpenFileNames(nullptr, "选择文件", "", "Text Files (*.txt);;All Files (*)");
    for (const QString &path : filePaths) {
        qDebug() << "选择的多个文件之一路径:" << path;
    }

    // 获取目录路径
    QString dirPath = QFileDialog::getExistingDirectory(nullptr, "选择目录");
    if (!dirPath.isEmpty()) {
        qDebug() << "选择的目录路径:" << dirPath;
    }

    return 0;
}

八. 颜色对话框

颜色对话框是一种用于选择颜色的对话框。它提供了一个可视化的界面,让用户可以从预定义的颜色中选择或自定义颜色。

属性

  • QColorDialog::Options:可设置对话框的选项,如是否显示透明度等。

方法

  • getColor():获取用户选择的颜色。

示例

#include<QApplication>
#include <QColorDialog>

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

    // 获取用户选择的颜色
    QColor color = QColorDialog::getColor(Qt::red, nullptr, "选择颜色");

    // 输出选择的颜色
    qDebug() << "选择的颜色:" << color;

    return app.exec();
}

效果图:

九. 进度对话框

进度对话框用于向用户显示操作的进度情况,让用户了解当前任务的进展状态。

属性

  • minimum 和 maximum:进度范围的最小值和最大值。
  • value:当前进度值。

方法

  • setValue(int value):设置当前进度值。

示例

#include <QProgressDialog>
#include <QTimer>
#include<QApplication>

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

    QProgressDialog progressDialog("任务进行中...", "取消", 0, 100);
    progressDialog.setWindowTitle("进度");

    QTimer timer;
    int progress = 0;
    QObject::connect(&timer, &QTimer::timeout, [&]() {
        progress++;
        progressDialog.setValue(progress);
        if (progress == 100) {
            timer.stop();
        }
    });

    timer.start(100);

    progressDialog.exec();

    return 0;
}

效果图:

十. 总结

QT 窗口总结

QT 中的窗口是应用程序与用户交互的主要界面元素。

  • 可以具有各种属性,如大小、位置、标题等。
  • 有不同类型,如顶层窗口、子窗口等。
  • 可以通过代码进行创建、设置属性和显示。

弹窗总结

弹窗是在特定情境下弹出的窗口,用于与用户进行特定交互。

  • 消息对话框:如信息提示、警告、严重错误、询问等,用于传达信息或获取简单的用户选择。
  • 文件对话框:方便用户选择文件或目录。
  • 颜色对话框:用于选择颜色。
  • 进度对话框:展示任务进度。

弹窗通常具有针对性的功能,能在特定场景下提供简洁有效的交互方式,增强用户体验和应用程序的功能性。它们可以根据需要动态弹出,并根据用户操作进行相应的处理和反馈。

  • 30
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一然明月(全栈)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值