做网站引用别人的图片,长沙网站建,河南省建筑一体化平台官网,郑州妇科哪一家医院好一、对话框
在软件开发中#xff0c;对话框#xff08;Dialog#xff09;是一种常见的用户界面元素#xff0c;用于与用户进行交互和获取信息。它通常以模态或非模态的形式出现#xff0c;模态对话框会阻止用户与应用程序的其他部分交互#xff0c;直到对话框关闭为止对话框Dialog是一种常见的用户界面元素用于与用户进行交互和获取信息。它通常以模态或非模态的形式出现模态对话框会阻止用户与应用程序的其他部分交互直到对话框关闭为止而非模态对话框允许用户在对话框打开的同时与应用程序的其他部分交互。在UI界面就是Dialog Button Box控件包含所有对话框具体使用特定的对话框时需要包含其特定的头文件。父对象可以填写this表示必须先处理该对话框才能在父对象上操作填写nullptr则不用可能导致父对象关闭而对话框不关闭检查用户是否取消了对话框操作并适当处理这种情况。例如在文件选择对话框中如果返回的路径为空表示用户取消了操作。
1.输入对话框Input Dialog
使用输入对话框先包含头文件QInputDialogQString txt QInputDialog::getText(父对象QString 标题QString 内容描述。 例如QString date QInputDialog::getText(this,星期,请输入星期几);getText的返回值就是你输入的内容它属于QString类。
2.消息对话框
使用消息对话框先包含头文件\QMessageBox如你所见是Box-盒子即它也多种类型。不过使用方法一样就是提醒图片略有不同。包含information、warning、critical、question对话框。按键值 QMessageBox::information(父对象QString 标题QString 提示按键组合默认按键 information可以替换为warning、critical、question举例
QMessageBox::StandardButton btn;//存储用户的选择结果。是枚举类型喔
btn QMessageBox::information(this,标题:告示,今天食堂不营业,QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);然后可以根据用户的选择进行相应的操作如ifSwitch等。3.文件对话框
文件对话框是一个标准的对话框允许用户选择一个或多个文件来打开、保存或选择目录。在 Qt 中QFileDialog 类提供了丰富的功能来处理这些需求。使用文件对话框先包含头文件\QFileDialogQFileDialog::getOpenFileName 是 Qt 中用于显示文件打开对话框的方法。它允许用户选择一个文件并返回所选文件的路径。 使用方法
原型:QString QFileDialog::getOpenFileName(QWidget *parent nullptr, const QString caption QString(), const QString dir QString(), const QString filter QString(), QString *selectedFilter nullptr, QFileDialog::Options options QFileDialog::Options())QString filename QFileDialog::getOpenFileName(父对象,标题默认路径筛选器);
筛选器: 通常以后缀来进行筛选如*.txt,*.png等等。但是“;;”的左边和右边是互斥选择的。
filename存储的你所选择的路径即getOpenFileName的返回值。举例代码
QString filename QFileDialog::getOpenFileName(this,标题请选择一个文件,./, *.txt ;; *.c *.h );
if(filename.isEmpty() ){qDebug()you select none;return;
}
qDebug()you will open filename;注意
getOpenFileNames只需要将接受返回值的类型改为QStringList类型即可。QFileDialog::getSaveFileName 是 Qt 中用于显示保存文件对话框的方法。它允许用户选择保存文件的位置和名称并返回所选文件的路径。格式与getOpenFileName差不多 QString fn QFileDialog::getSaveFileName(this,标题请输入保存的文件名,.,*.png ;; *.jpeg *.jpg);qDebug()you will save fn;QFileDialog::getExistingDirectory 是 Qt 中用于显示目录选择对话框的方法。它允许用户选择一个目录并返回所选目录的路径。 QFileDialog::getExistingDirectory(父对象,标题选择路径,默认路径);*/QString fn QFileDialog::getExistingDirectory(this,标题选择路径,.);代码
二、布局
在Qt中进行布局是一个非常常见的任务通常使用布局管理器Layout Managers来组织和管理窗口部件的位置和大小。它们之间是可以嵌套使用的
1.vertical layout
垂直布局QVBoxLayout是Qt中的一个布局管理器用于将控件垂直排列在窗口或其他容器中。其主要作用是方便地管理和组织窗口部件的位置和大小使界面看起来更加整洁和易于调整。
2. horizontal layout
水平布局QHBoxLayout是Qt中的一个布局管理器用于将控件水平排列在窗口或其他容器中。
3. grid layout
网格布局QGridLayout是Qt中的一个布局管理器用于将控件按照网格形式排列在窗口或其他容器中特点
网格排列控件可以按照指定的行和列放置每个控件可以占据一个或多个网格单元。灵活性可以方便地添加、删除或重新排列布局中的控件而不会影响到其它部分的布局。自适应调整当窗口大小改变时网格布局会自动调整控件的位置和大小以适应新的窗口尺寸。 3.示例
4. Horizontal spacer和vertical spacer
用于在布局中创建空白空间或者弹性空间QSpacerItem 和 QSizePolicy::Expanding。它们可以帮助实现在布局中控制部件之间的间距或者使部件在布局中扩展以填充空白区域。
三、菜单
Qt中的菜单栏QMenuBar是一个用于在应用程序中创建和管理菜单的控件。它通常位于窗口的顶部并包含多个菜单项。每个菜单项可以包含多个子项动作这些动作可以触发特定的功能或操作。菜单栏在用户界面设计中起着重要作用提供了对应用程序功能的结构化访问。使用ui设计器时选择QMainWindows会在ui界面多一行菜单栏 setContextMenuPolicy()
setContextMenuPolicy() 函数是 Qt 中用于设置控件上下文菜单策略的方法。它决定了当用户在控件上执行右键单击时如何处理和显示上下文菜单。括号内参数有Qt::NoContextMenu / Qt::preventContextMenu / Qt::CustomContextMenu/Qt::DefaultContextMenu ,分别代表没有右击菜单阻止右击菜单产生允许右击事件产生默认值如果设置为 Qt::DefaultContextMenu则会显示控件默认的上下文菜单这通常由 Qt 框架根据控件类型和平台决定。允许右击菜单产生将会发出customContextMenuRequested(const QPoint)信号传递的参数是右键单击事件发生时的鼠标指针位置属于高级用法。
QMenu *pMenu,指向 QMenu 类型的指针变量用于管理菜单,在Widget.h中创建可以在定义的槽函数里面使用但要注意的是在构造函数里面实例化时候是pMeu new QMenu;,而不是QMenu *pMenu new QMenu它属于没有在Widget.h中定义在构造函数中实例化的方法。一定要注意因为这样写错了代码不会报错但是会运行时出错。ACtion
QAction 是 Qt 中用于表示用户界面中的动作或命令的类。它通常用于菜单、工具栏、快捷键等场景用来定义用户可以执行的操作。QAction *action new QAction(动作名称, this);加入到菜单里面使用函数addActionpMenu-addAction(pCut);它的信号为triggered()
pActDel new QAction(Del);connect(pActDel,SIGNAL(triggered()),this,SLOT( pActDelTriggeredSlotFun() ));QCursor::pos();它的返回值为当前鼠标光标的全局位置坐标。通过调用 move() 函数将 pMenu 移动到鼠标光标的位置。
move() 函数用于移动窗口或控件到指定的坐标位置。
pMenu-move(QCursor::pos());//移动位置
pMenu-show();//使菜单显示出来
这两行代码的作用是确保在哪里右击就在哪里显示右击菜单栏示例代码
#include widget.h
#include ui_widget.h
#include QMessageBox // 包含 QMessageBox 类头文件
#include QDebug // 包含 qDebug() 函数的头文件Widget::Widget(QWidget *parent): QWidget(parent), // 调用父类 QWidget 的构造函数ui(new Ui::Widget) // 初始化界面类对象 ui
{ui-setupUi(this); // 设置界面布局// 创建主菜单和子菜单pMenu1 new QMenu(菜单11); // 创建名称为 菜单11 的子菜单对象pMenu new QMenu(菜单); // 创建名称为 菜单 的主菜单对象// 创建动作菜单项pCut new QAction(剪切); // 创建名称为 剪切 的动作对象pCopy new QAction(复制); // 创建名称为 复制 的动作对象pPoaste new QAction(粘贴); // 创建名称为 粘贴 的动作对象pDel new QAction(删除); // 创建名称为 删除 的动作对象pIns new QAction(子菜单); // 创建名称为 子菜单 的动作对象// 设置标签控件的上下文菜单策略为自定义上下文菜单ui-label-setContextMenuPolicy(Qt::CustomContextMenu);// 连接标签控件的自定义上下文菜单请求信号到槽函数connect(ui-label, SIGNAL(customContextMenuRequested(const QPoint)),this, SLOT(labelCustomContextMenuRequestedSlotFun(const QPoint)));// 将子菜单添加到主菜单中pMenu-addMenu(pMenu1);// 在子菜单中添加动作菜单项pMenu1-addAction(pIns);// 在主菜单中添加动作菜单项pMenu-addAction(pCut);pMenu-addAction(pCopy);pMenu-addAction(pPoaste);pMenu-addAction(pDel);// 连接删除动作的触发信号到槽函数connect(pDel, SIGNAL(triggered()), this, SLOT(pDelTriggeredSlotFun()));
}Widget::~Widget()
{delete ui; // 释放界面类对象内存
}// 处理标签控件的自定义上下文菜单请求槽函数
void Widget::labelCustomContextMenuRequestedSlotFun(const QPoint p)
{qDebug() __func__ p; // 打印函数名和鼠标右击位置坐标// 将主菜单移动到鼠标光标的位置并显示pMenu-move(QCursor::pos());pMenu-show();
}// 处理删除动作的槽函数
void Widget::pDelTriggeredSlotFun()
{// 显示删除确认对话框并等待用户响应QMessageBox::StandardButton btn QMessageBox::question(this,删除,你确认要删除对象吗,QMessageBox::Yes | QMessageBox::Cancel,QMessageBox::Cancel);if (btn QMessageBox::Yes) {// 如果用户点击了确认按钮执行删除操作qDebug() 执行删除操作;} else {// 如果用户点击了取消按钮输出取消删除操作信息qDebug() 取消删除操作;}
}