对话框以及主界面

在本章内,如果在当前的类里面没有找到需要的函数,就往类的父类去找。

一、对话框

        什么交对话框,对话框一般是指在窗口下发生人机交互的弹出框。 比如信息提示框,信息确认框。对话框是一种次要窗口,包含按钮和各种选项,通过它们可以完成特定命令或任务。在图形用户界面中,对话框是一种特殊的视窗, 用来在用户界面中向用户显示信息,或者在需要的时候获得用户的响应。之所以称之为“对话框”是因为它是用户与用户通过计算机来对话的窗口

在QT中常见的对话框有文件对话框、消息对话框、颜色对话框、字体对话框、输入对话框

1、文件对话框 (QFileDialog)

        顾名思义就是对文件进行操作的对话框就是文件对话框,就行对文件进行创建、删除、保存等操作的一些操作。其文件对话框所包含的类在QFileDialog类中,对文件对话框的所有操作函数都是从里面进行调用的。如打开单个文件、打开多个文件、保存操作。

1a3d67fdbce64545988285fc6c26fc2a.png

        其运用的函数在QT->帮助->QFileDialog里面,在里面可以看见所有的运用函数,以及函数的具体实现。

一般常用的是这些函数,如果需要了解其他函数,就去查看QFileDialog

//1、打开单个文件
QString getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = ...)
//2、打开多个文件
QStringList getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = ...)、
//3、保存文件
QString getSaveFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = ...)

2、消息对话框(QMessageBox)

        QMessageBox类提供了一个模式化的对话框,用于通知用户或向用户提出问题并得到回答。
一个消息框显示一个主要的文本来提醒用户一个情况,一个信息性的文本来进一步解释这个提醒或问用户一个问题,以及一个可选的详细文本来提供更多的数据,如果用户要求的话。消息框还可以显示一个图标和标准按钮,以接受用户的回应。
        提供了两个使用QMessageBox的API,基于属性的API和静态函数。调用一个静态函数是比较简单的方法,但它不如使用基于属性的API灵活,而且结果的信息量也比较小。建议使用基于属性的API。

b87e4fea44d7424b991ad834727bf5e0.png 常用函数为

about
void about(QWidget *parent, const QString &title, const QString &text)
critical-----x
QMessageBox::StandardButton critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton = NoButton)
information---i
QMessageBox::StandardButton information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton = NoButton)
question---?
QMessageBox::StandardButton question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = ..., QMessageBox::StandardButton defaultButton = NoButton)
warning---!
QMessageBox::StandardButton warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton = NoButton)

3、颜色对话框(QColorDialog)

        QColorDialog类提供了一个用于指定颜色的对话框小部件。颜色对话框的功能是让用户选择颜色。例如,你可以在一个绘图程序中使用它,让用户设置画笔的颜色。静态函数提供了模式化的颜色对话框
        静态的getColor()函数显示对话框,并允许用户指定一种颜色。这个函数也可以用来让用户选择具有一定透明度的颜色:将ShowAlphaChannel选项作为附加参数传给用户。用户可以存储customCount()不同的自定义颜色。这些自定义颜色被所有颜色对话框共享,并在程序执行过程中被记住。使用setCustomColor()来设置自定义颜色,并使用customColor()来获取它们。当按下 "挑选屏幕颜色 "按钮时,光标会变成一个十字形,屏幕上的颜色被扫描出来。用户可以通过点击鼠标或回车键选取一种。按Escape键可以恢复进入此模式前最后选择的颜色。

eb71f9e55eec4af6ab6757ecdc4fee34.png

 函数:

QColor getColor(const QColor &initial = Qt::white, QWidget *parent = nullptr, const QString &title = QString(), QColorDialog::ColorDialogOptions options = ...)

4、字体对话框(QFontDialog) 

        QFontDialog类提供了一个用于选择字体的对话框小部件。一个字体对话框是通过一个静态的getFont()函数创建的。

7e3a3a787a9f450b97b9f8827c737f42.png

参见QFont, QFontInfo, QFontMetrics, QColorDialog, QFileDialog, 和Standard Dialogs 示例。

QFont getFont(bool *ok, const QFont &initial, QWidget *parent = nullptr, const QString &title = QString(), QFontDialog::FontDialogOptions options = ...)

QFont getFont(bool *ok, QWidget *parent = nullptr)

 

5、输入对话框(QInputDialog)

        QInputDialog类提供了一个简单的便利对话框,从用户那里获得一个单一的值。输入值可以是一个字符串、一个数字或一个列表中的项目。必须设置一个标签来告诉用户他们应该输入什么。
        提供了五个静态便利函数:getText(), getMultiLineText(), getInt(), getDouble(), and getItem()。所有的函数都可以以类似的方式使用。

560995bafdc94fb0bc22cbd301ef6f38.png

double getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = nullptr, Qt::WindowFlags flags = ...)

int getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = nullptr, Qt::WindowFlags flags = ...)

QString getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = ..., Qt::InputMethodHints inputMethodHints = Qt::ImhNone)

二、主界面(QMainWindow)

        主窗口为构建一个应用程序的用户界面提供了一个框架。Qt有QMainWindow和它的相关类来管理主窗口。QMainWindow有自己的布局,你可以在上面添加QToolBars、QDockWidgets、QMenuBar和QStatusBar。该布局有一个中心区域,可以被任何种类的部件占据。

菜单栏:QMenuBar类管理菜单栏
菜单项:QMenu类管理菜单项
执行:    QAction类管理执行的动作
工具栏:QToolBar类管理工具栏
状态栏:QStatusBar类管理状态栏
工作区:QWidget类管理

就像是记事本的封面,可以看到这些信息

1、工作区(QWidget)

一般一个界面都有一个工作区,称工作区为中心工作区。也就是最底层的界面

中心工作区:        
void QMainWindow::setCentralWidget(QWidget *widget)

多个工作区:        

(1)void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget)         向界面增加多个工作区

        参数1--Qt::DockWidgetArea area:设置工作区放置的位置
        参数2--QDockWidget *dockwidget:设置工作区

(2)void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget, Qt::Orientation orientation)           向界面增加多个工作区
        参数1--Qt::DockWidgetArea area:设置工作区放置的位置
        参数2--QDockWidget *dockwidget:设置工作区
        参数3--Qt::Orientation orientation:设置工作区摆放的位置(水平和垂直)

2、菜单栏(QMenuBar)

        QMenuBar:是所有窗口的菜单栏,在此基础上添加不同的QMenu(菜单项)和QAction(行为)

(1)增加菜单
QAction *addMenu(QMenu *menu);
QMenu *addMenu(const QString &title);
QMenu *addMenu(const QIcon &icon, const QString &title)
(2)增加执行的动作
QAction *addAction(const QString &text)
QAction *addAction(const QString &text, const QObject *receiver, const char *member)
QAction *addAction(const QString &text, const Obj *receiver, PointerToMemberFunctionOrFunctor method)
QAction *addAction(const QString &text, Functor functor)

QMenu:菜单栏里面菜单(菜单项),可以显示文本和图标,但是并不负责执行操作,有点类似label的作用。
QAction:Qt将用户与界面进行交互的元素抽象为一种“动作”,使用QAction类表示,QAction才是真正负责执行操作的部件。

3、工具栏(QToolBar)

        工具栏包含了基本的控件(按钮、标签、编辑框等等),主窗口QMainWIndow可以设置多个工具栏,工具栏可以放置基本控件和执行的动作(QAction),但是没有菜单项。

4、状态栏(QStatusBar)

        状态栏主要作用显示或者是提示的作用,状态栏也是放置一些基本的控件(按钮、标签、编辑框等等)。

三、事件

        事件:事件的起因,经过,结果,QT里提供了事件,QT里对事件封装成了一个个对象(类),例如:鼠标事件(QMouseEvent)、键盘事件(QKeyEvent)、定时器事件(QTimer)、图形事件等,事件的流程:事件的产生、事件的派送、事件的分发、事件的处理,QT里所有的事件都是统一归QEvent类管理。
1、事件的产生
        内部可以产生事件(定时器事件)、外部可以产生事件(鼠标:左击、右击、双击、滑轮滚动等等,键盘:按键按下、按键释放等等)
2、事件的派送
        对GUI程序来说,事件的派送是通过QApplication类来对事件进行派送,调用QApplication里的exec()函数来进入事件循环状态(监听事件)
3、事件的分发
        QT提供了一个类:QEvent类来负责事件的分发,QEvent类里有event()函数
4、事件的处理
        QT里也提供了相应的事件处理函数来处理事件,keypressevent()、mousepressevent()等等。

5、QT里的常用的事件---QWidget类(如遇见不会就是直接查该函数)
(1)virtual void closeEvent(QCloseEvent *event)        窗口关闭事件处理函数
(2)virtual void dragEnterEvent(QDragEnterEvent *event)拖动一个窗口进入到另外一个窗口的时候,触发该事件
(3)virtual void dragLeaveEvent(QDragLeaveEvent *event)拖动一个窗口离开另外一个窗口的时候,触发该事件
(4)virtual void dragMoveEvent(QDragMoveEvent *event)拖动窗口的时候,触发该事件

(5)virtual void enterEvent(QEvent *event)        当鼠标进入到该窗口的时候,触发该事件

(6)virtual void hideEvent(QHideEvent *event)                当窗口隐藏的时候,触发该事件

(7)virtual void keyPressEvent(QKeyEvent *event)        当键盘按下的时候,触发该事件

(8)virtual void keyReleaseEvent(QKeyEvent *event)当键盘按下并释放的时候,触发该事件

(9)virtual void leaveEvent(QEvent *event)                    当鼠标离开窗口的时候,触发该事件

(10)virtual void mouseDoubleClickEvent(QMouseEvent *event)当鼠标双击时,触发该事件

(11)virtual void mouseMoveEvent(QMouseEvent *event)   当鼠标移动的时候,触发该事件

(12)virtual void mousePressEvent(QMouseEvent *event)  当鼠标按下的时候,触发该事件

(13)virtual void paintEvent(QPaintEvent *event)                 绘制图形时,触发该事件

(14)virtual void resizeEvent(QResizeEvent *event)            当窗口大小改变时,触发该事件

(15)virtual void timerEvent(QTimerEvent *e) override        当开启了定时器时,触发该事件

四、布局管理器

        提供布局管理器来管理界面上基本的控件(按钮、标签等等)

50d49f23e1144084b6d18629ca91d01d.png

1、水平布局管理器        类:QHBoxLayout----水平布局管理器

2、垂直布局管理器        类:QVBoxLayout----垂直布局管理器

3、网格布局管理器        类:QGridLayout-----网格布局管理器

五、文件操作

1、QFile类        

        直接用于对文件的操作,给QFile类传递一个文件名或者是路径

(1)打开文件:open()函数
(2)读写文件:read()函数
(3)文件写入:write()函数
(4)关闭文件:close()函数

2、QTextStream类(文本流)

(1)文本流:用于读写文本内容:QString、QIODEVICE等等-------QTextStream类
The QTextStream class provides a convenient interface for reading and writing text. 
读写方法:跟文件直接读写一样

3、QDataStream类(数据流:用于读写二进制数据)

数据流多用于重载进行操作

QDataStream()
QDataStream(QIODevice *d)
QDataStream(QByteArray *a, QIODevice::OpenMode mode)
QDataStream(const QByteArray &a)

QDataStream &readBytes(char *&s, uint &l)
int readRawData(char *s, int len) //从数据流里读取len个数据

QDataStream &operator<<(const char *s) //向数据流里存入数据
QDataStream &operator>>(const char *s) //从数据流里读取数据

4、QFileInfo类-----获取文件信息

        QFileInfo用于管理文件的信息(文件的大小、文件名、创建时间、后缀等等)。

5、QDir类-----文件目录

用于管理文件的目录:QDir类

QDir(const QDir &dir)
QDir(const QString &path = QString())
QDir(const QString &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries)
QString absoluteFilePath(const QString &fileName) const  //获取文件的绝对路径
QString absolutePath() const//获取文件的绝对路径,不包含文件名
bool cd(const QString &dirName) //QDir dir    dir.cd("D:/") 切换到不同的目录 ,切换成功--true,切换失败--false  
QString dirName() const //获取目录的名称
bool mkdir(const QString &dirName) const //创建目录
bool mkpath(const QString &dirPath) const
bool remove(const QString &fileName) //移除文件
bool rmdir(const QString &dirName) const  //移除文件包括路径,使用时尤其注意
bool rmpath(const QString &dirPath) const

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

啵啵520520

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

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

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

打赏作者

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

抵扣说明:

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

余额充值