当前位置: 首页 > news >正文

前潮网络网站建设/优化关键词推广

前潮网络网站建设,优化关键词推广,网站建设领先,广告传媒公司业务QMianWindow 概述 QMainWindow 是一个为用户提供主窗口程序的类,包含一个菜单栏( menu bar )、多 个工具栏 (tool bars) 、多个铆接部件 (dock widgets) 、一个状态栏 (status bar) 及 一个中心部件 (central widget) 许多应用程序的基础…

QMianWindow

概述

QMainWindow 是一个为用户提供主窗口程序的类,包含一个菜单栏( menu bar )、多
个工具栏 (tool bars) 、多个铆接部件 (dock widgets) 、一个状态栏 (status bar)
一个中心部件 (central widget)
许多应用程序的基础,如文本编辑器,图片编辑器等。

菜单栏

创建菜单栏:
#include <QMenuBar>
QMenuBar --> QMenuBar(QWidget *parent = Q_NULLPTR)
添加菜单栏:
QMainWindow --> void setMenuBar(QMenuBar *menuBar)
创建菜单:
#include <QMenu>
QMenu --> QMenu(const QString &title, QWidget *parent = Q_NULLPTR)
添加菜单:
QMenuBar --> QAction *addMenu(QMenu *menu);
QMenu --> QAction *addMenu(QMenu *menu);
创建菜单项:
#include <QAction>
QAction --> QAction(const QString &text, QObject *parent = nullptr)
添加菜单项:
QMenu --> addAction(const QAction *action)
添加分割线
QMenu->addSeparator()
设置快捷方式
QAction --> setShortcut(tr(" 快捷键 "));
QAction --> setShortcut(QKeySequence( 1+ 2));
:
qa --> setShortcut(tr("ctrl+n"));
qa -> setShortcut(QKeySequence(Qt::CTRL+Qt::Key_N));
QAction 的信号
void changed()
void hovered()
void toggled(bool checked)
void triggered(bool checked = false) 触发【推荐】

工具栏

创建工具栏:
#include <QToolBar>
QToolBar --> QToolBar(QWidget *parent = Q_NULLPTR)
添加工具栏:
QMainWindow -->
        void addToolBar(QToolBar *toolbar)
        void addToolBar(Qt::ToolBarArea area, QToolBar *toolbar)
                Qt::LeftToolBarArea 左边显示
                Qt::RightToolBarArea 右边显示
                Qt::TopToolBarArea 上边显示
                Qt::BottomToolBarArea 下边显示
设置位置
setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea
设置可移动性
setMoveable(false) // 工具条不可移动 , 只能停靠在初始化的位置上

状态栏

创建状态栏:
QStatusBar --> QStatusBar(QWidget *parent = Q_NULLPTR);
将控件添加到左边栏
void addWidget(QWidget *widget, int stretch = 0)
将控件添加到右边栏
void addPermanentWidget(QWidget *widget, int stretch = 0)
添加状态栏:
QMainWindow --> void setStatusBar(QStatusBar *statusbar)

铆接部件

创建铆接部件:
QDockWidget -->QDockWidget(const QString &title, QWidget *parent =
Q_NULLPTR)
添加铆接部件:
QMainWindow -->void addDockWidget(Qt::DockWidgetArea area,
QDockWidget* dockwidget)
        Qt::LeftDockWidgetArea 左边
        Qt::RightDockWidgetArea 右边
        Qt::TopDockWidgetArea 上边
        Qt::BottomDockWidgetArea 下边

中心控件

// 创建文本编辑控件
QTextEdit * userName = new QTextEdit(this);
userName->setText(" 文本编辑 ");
// 添加中心控件
setCentralWidget(userName);

资源文件

步骤 1: 创建资源管理文件夹
步骤2:添加前缀
步骤3:添加文件
1, 创建 image 文件夹
2, 将所需图片资源存储到该文件夹中
3, 将该文件夹拷贝到项目下
4, 先点击添加 , 选择添加文件
注意 : 添加完文件或修改别名之后,需要保存( Ctrl+S
别名
【注意】资源有别名后原资源路径无法访问该资源。
使用
QPixmap pix;
pix.load(":/image/up.png");
ui->label->setPixmap(pix);
this->setWindowIcon(QIcon(":/image/Sunny.jpg"));
注意 : 如果资源有别名直接使用 , Sunny.jpg 的别名为 s , 直接使用别名 , 如下
this->setWindowIcon(QIcon(":/s"));

对话框

分类
对话框分为模态对话框和非模态对话框。
模态对话框,就是会阻塞同一应用程序中其它窗口的输入。
是非模态对话框,例如查找对话框,我们可以在显示着查找对话 框的同时,继续对记事本的内进行编辑
使用 QDialog::exec() 实现应用程序级别的模态对话框
使用 QDialog::open() 实现窗口级别的模态对话框
使用 QDialog::show() 实现非模态对话框
头文件
#include<QDialog>
基本对话框
对应类 :QMessageDialog
示例1:
QPushButton * btn01 = new QPushButton ( " 消息对话框 : 提示框 " , this );
connect ( btn01 , QPushButton::clicked ,[ & ](){
QMessageBox::about ( this , " 关于 " , "QT5 之消息对话框 : 提示框 " );
});
示例2:
QPushButton * btn02 = new QPushButton ( " 消息对话框 : 警告框 " , this );
btn02 -> move ( 0 , 50 );
connect ( btn02 , QPushButton::clicked ,[ & ](){
QMessageBox::warning ( this , " 关于 " , "QT5 之消息对话框 : 警告框 " );
});
示例3:
QPushButton * btn03 = new QPushButton ( " 消息对话框 : 错误框 " , this );
btn03 -> move ( 0 , 100 );
connect ( btn03 , QPushButton::clicked ,[ & ](){
QMessageBox::critical ( this , " 关于 " , "QT5 之消息对话框 : 错误框 " );
});
示例4:
QPushButton * btn04 = new QPushButton ( " 消息对话框 : 消息框 " , this );
btn04 -> move ( 0 , 150 );
connect ( btn04 , QPushButton::clicked ,[ & ](){
QMessageBox::information ( this , " 关于 " , "QT5 之消息对话框 : 消息框 " );
});
示例5:
QPushButton * btn05 = new QPushButton ( " 消息对话框 : 选择框 " , this );
btn05 -> move ( 0 , 200 );
connect ( btn05 , QPushButton::clicked ,[ & ](){
QMessageBox::StandardButton sta ;
sta = QMessageBox::question ( this , " 问答 " , " 消息对话框你学会了吗 ?" );
if ( sta == QMessageBox::Yes )
{
        qDebug () << " 学会了 " << endl ;
}
else
{
        qDebug () << " 没学会 " << endl ;
}
});
文件对话框
头文件
#include <QFileDialog>
示例:
QPushButton * btn06 = new QPushButton ( " 文件对话框 " , this );
btn06 -> move ( 0 , 250 );
connect ( btn06 , QPushButton::clicked ,[ & ](){
QString filename = QFileDialog::getOpenFileName ( this , "
" , "D:/" , "*.cpp" );
qDebug () << filename << endl ;
});
颜色对话框
头文件
#include <QColorDialog>
示例:
QPushButton * btn07 = new QPushButton ( " 颜色对话框 " , this );
btn07 -> move ( 0 , 300 );
connect ( btn07 , QPushButton::clicked ,[ & ](){
QColor color = QColorDialog::getColor ( Qt::white , this , " 颜色 " );
qDebug () << color . red () << " " << color . green () << " " << color . blue () << endl ;
});
字体对话框
头文件
#include <QFontDialog>
示例:
QPushButton *btn08 = new QPushButton(" 字体对话框 ",this);
btn08->move(0,350);
connect(btn08, QPushButton::clicked,[&](){
bool yes = true;
QFont font = QFontDialog::getFont(&yes,QFont(" 宋体 "),this," 字体 ");
qDebug() << endl << font.family()<< endl;
qDebug() << font.pointSize() << endl;
});
自定义对话框
创建

使用
1, 导入头文件
2, 使用
QPushButton * btn09 = new QPushButton ( " 自定义对话框 " , this );
btn09 -> move ( 0 , 400 );
connect ( btn09 , QPushButton::clicked ,[ & ](){
MyDialog01 * dialog = new MyDialog01 ( this );
dialog -> setWindowTitle ( " 自定义对话框 " );
// 模态对话框
//dialog->exec();
// 非模态对话框
dialog -> show ();
});

布局方式

概述

Qt 提供了两种组件定位机制:绝对定位和布局定位
1 ) 绝对定位: 是一种最原始的定位方法,给出这个组件的坐标和长宽值。
2 ) 布局定位: 只要把组件放入某一种布局,布局由专门的布局管理器进行管理,当
需要调整大小或者位置的时候, Qt 使用对应的布局管理器进行调整。
Qt 提供的布局中以下三种是我们最常用的:
QHBoxLayout :按照水平方向从左到右布局;
QVBoxLayout :按照竖直方向从上到下布局;
QGridLayout :在一个网格中进行布局,类似于 HTML table
系统提供的布局控件
以上使用不灵活
利用 widget 做布局

常用UI控件

QLabel 标签控件
语法
setText 设置文本
text 获取文本
setPixmap 显示图片
setMovie 显示动画
示例1
// 设置文本
ui->test01->setText(" 德玛西亚 ");
connect(ui->btn01,QPushButton::clicked,[&](){
QString str;
// 获取文本
str = ui->test01->text();
qDebug() << str << endl;
});
示例2
// 设置图片
ui->test01->setPixmap(QPixmap(":/hd"));
ui->test01->setPixmap(QPixmap(":/image/Edit.png"));
示例3
// 设置动画
QMovie *movie = new QMovie(":/image/mario.gif");
ui->test01->setMovie(movie);
// 开始播放
movie->start();
// 停止播放
movie->stop();
QLineEdit 标签控件
语法
QString text() const
void setText(const QString &)
void setEchoMode(EchoMode mode)
QLineEdit::Normal 模式显示方式,按照输入的内容显示。
QLineEdit::NoEcho 不显示任何内容,此模式下无法看到用户的输入。
QLineEdit::Password 密码模式,输入的字符会根据平台转换为特殊字符。
QLineEdit::PasswordEchoOnEdit 编辑时显示字符否则显示字符作为密
void setTextMargins(int left, int top, int right, int bottom)
示例
ui->lineEdit->setText("hello world");
ui->lineEdit->setEchoMode(QLineEdit::Password);
ui->lineEdit->setTextMargins(20,50,20,10);
connect(ui->btn,QPushButton::clicked,[&](){
QString str;
str = ui->lineEdit->text();
qDebug() << str.toUtf8().data() << endl;
});
单选框
示例
代码
// 头文件中声明性别与年龄
private :
Ui::Widget * ui ;
QString sex ;
QString hun ;
// 源文件
connect ( ui -> sexm , QPushButton::clicked ,[ & ](){
sex = ui -> sexm -> text ();
qDebug () << " 性别 :" << sex . toUtf8 (). data () << endl ;
});
connect ( ui -> sexw , QPushButton::clicked ,[ & ](){
sex = ui -> sexw -> text ();
qDebug () << " 性别 :" << sex . toUtf8 (). data () << endl ;
});
connect ( ui -> hun1 , QPushButton::clicked ,[ & ](){
hun = ui -> hun1 -> text ();
qDebug () << " 婚否 :" << hun . toUtf8 (). data () << endl ;
});
connect ( ui -> hun2 , QPushButton::clicked ,[ & ](){
hun = ui -> hun2 -> text ();
qDebug () << " 婚否 :" << hun . toUtf8 (). data () << endl ;
});
多选框
示例
代码
// 头文件
// 存储多选选中内容的容器
QStringList list;
// 源文件,在 UI 文件中点击 CheckBox, 右击转到槽
void Widget::on_checkBox1_stateChanged(int arg1)
{
if(arg1 == 2){
list.append(ui->checkBox1->text());
}
else
{
list.removeOne(ui->checkBox1->text());
}
for(int i = 0; i < list.size(); i++)
{
qDebug() << list.at(i) << endl;
}
}
void Widget::on_checkBox2_stateChanged(int arg1)
{
if(arg1 == 2){
list.append(ui->checkBox2->text());
}
else
{
list.removeOne(ui->checkBox2->text());
}
for(int i = 0; i < list.size(); i++)
{
qDebug() << list.at(i) << endl;
}
}
void Widget::on_checkBox3_stateChanged(int arg1)
{
if(arg1 == 2){
list.append(ui->checkBox3->text());
}
else
{
list.removeOne(ui->checkBox3->text());
}
for(int i = 0; i < list.size(); i++)
{
qDebug() << list.at(i) << endl;
}
}
下拉列表
示例:
代码:
// 设置当前选中的位置
ui->comboBox->setCurrentIndex(2);
// 当选中发送改变时调用
void Widget::on_comboBox_currentIndexChanged(const QString &arg1)
{
qDebug() << arg1 << endl;
}

相关文章:

Day12 qt QMianWindow,资源文件,对话框,布局方式,常用ui控件

QMianWindow 概述 QMainWindow 是一个为用户提供主窗口程序的类&#xff0c;包含一个菜单栏&#xff08; menu bar &#xff09;、多 个工具栏 (tool bars) 、多个铆接部件 (dock widgets) 、一个状态栏 (status bar) 及 一个中心部件 (central widget) 许多应用程序的基础…...

Python实现广义线性回归模型(statsmodels GLM算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 广义线性模型(Generalized Linear Model&#xff0c;简称GLM)是一种广泛应用于回归分析和分类问题的统…...

GNSEC 2022年第8届全球下一代软件工程线上峰会-核心PPT资料下载

一、峰会简介 新一代软件工程是指利用新的理论、方法和技术&#xff0c;在软件开发、部署、运维等过程中&#xff0c;实现软件的可控、可预测、可维护的软件生产方式。它涵盖了多个领域&#xff0c;如软件开发、测试、部署、运维等&#xff0c;旨在提高软件生产效率和质量。 …...

nVisual能为数据中心解决什么问题?

nVisual通过可视化的管理方式&#xff0c;使数据中心管理者能够有效且高效地管理数据中心的资产、线缆、容量、变更&#xff1b;使数据中心管理者能够获得如下问题的答案&#xff0c;以便能够快速做出更好、更明智的决策&#xff1a; 1&#xff0e;资产管理 我们有什么&#x…...

Android--Jetpack--Databinding详解

不经一番寒彻骨&#xff0c;怎得梅花扑鼻香 一&#xff0c;定义 DataBinding, 又名数据绑定&#xff0c;是Android开发中非常重要的基础技术&#xff0c;它可以将UI组件和数据模型连接起来&#xff0c;使得在数据模型发生变化时&#xff0c;UI组件自动更新。是 MVVM 模式在 An…...

Node.js入门指南(完结)

目录 接口 介绍 RESTful json-server 接口测试工具 会话控制 介绍 cookie session token 上一篇文章我们介绍了MongoDB&#xff0c;这一篇文章是Node.js入门指南的最后一篇啦&#xff01;主要介绍接口以及会话控制。 接口 介绍 接口是前后端通信的桥梁 &#xff0…...

MySQL和Java通用加密解密方式

加密方式使用 AES 加密&#xff0c;再转成 Base64。 SQL -- 加密 update your_table set your_columnto_base64(aes_encrypt(your_column, "password"));-- 解密 select aes_decrypt(from_base64(your_column) ,"password") from your_table; 使用原生 …...

若依前端APP版使用教程

1 增加页面流程 新增Page>新增API>新增组件>新增样式>新增路径(page.json) {"path": "pages/mes/pro/feedback/index","style": {"navigationBarTitleText": "工单报工"}} <template><view class&quo…...

2023 年工程师不可错过的 AI 主要发展趋势

从对未来的好奇到关键的企业工具&#xff0c;人工智能的发展证明了它对工程师的价值。不久前&#xff0c;Gartner 预测&#xff0c;采用人工智能工程实践来构建和管理自适应人工智能系统的企业&#xff0c;在实施人工智能模型方面的表现将优于同行至少 25%&#xff0c;这为各组…...

记录 | 安装地平线工具链install_ai_toolchain.sh出现cython版本问题报错解决

安装地平线工具链 install_ai_toolchain.sh&#xff1a; cd ddk/package/host/ai_toolchain bash install_ai_toolchain.sh出现报错&#xff1a; Requirement already satisfied: packaging>20.0 in /root/.local/lib/python3.8/site-packages (from matplotlib>2.1.0-…...

Java8流操作

Java8流操作 1. 双层Map一层List 1. 双层Map一层List 代码片 // 开始分组Map<String, Map<Object, List<ProjectGeographyVO>>> collect4 vos.stream()// 注释了下行没用市级项目,只有区// .filter(data -> String.valueOf(data.getCode()).length() …...

vue-socket.io以及原生websocket的使用

vue3使用socket.io 1、安装 npm install vue-socket.io2、创建socket.js文件 export const registerSockets (sockets, proxy) > {sockets &&Object.keys(sockets).forEach((t) > {// console.log(t);// "subscribe" ! t &&// "un…...

谷歌推出功能最强大的大语言模型Gemini;大规模语言模型:从理论到实践

&#x1f989; AI新闻 &#x1f680; 谷歌推出功能最强大的大语言模型Gemini 摘要&#xff1a;谷歌正式推出其迄今为止功能最强大、最通用的大语言模型Gemini。Gemini在许多测试中表现出了最先进的性能&#xff0c;在大部分基准测试中击败了OpenAI的GPT-4。谷歌发布了三种不同…...

Android studio 工程的 module 依赖关系图绘制 、 Android Module 依赖关系的可视化实现

整体步骤&#xff1a; 1、利用gradle脚本生成dot&#xff1b; 2、利用graphviz将dot可视化转为图片 利用gradle脚本生成dot 下载projectDependencyGraph.gradle脚本 下载 projectDependencyGraph.gradle &#xff0c;放在项目根目录&#xff0c; 源码如下&#xff1a; t…...

Qt之QGraphicsView —— 笔记1.2:将QGraphicsView放置主窗口上,绘制简单图元(附完整源码)

效果 相关类介绍 QGraphicsView类提供了一个小部件,用于显示QGraphicsScene的内容。QGraphicsView在可滚动视口中可视化。QGraphicsView将滚动其视口,以确保该点在视图中居中。 QGraphicsScene类 提供了一个用于管理大量二维图形项的场景。请注意,QGraphicsScene没有自己的视…...

linux的权限管理

在Linux系统中&#xff0c;文件和目录的权限管理是通过用户、组以及其他用户对文件和目录的读&#xff08;r&#xff09;、写&#xff08;w&#xff09;和执行&#xff08;x&#xff09;权限来实现的。以下是有关Linux权限管理的详细解释&#xff1a; 文件和目录权限&#xff1…...

什么是 performance_schema ?

MySQL的performance_schema是运行在较低级别的用于监控MySQL Server运行过程中的资源消耗、资源等待等情况的一个功能特性&#xff0c;它具有以下特点。 performance_schema提供了一种在数据库运行时实时检查Server内部执行情况的方法。performance_schema数据库中的表使用per…...

软件多开助手的创新使用:在同一设备上玩转多个游戏

软件多开助手&#xff1a;在同一设备上玩转多个游戏的创新使用 随着科技的不断发展&#xff0c;手机和电脑已经成为我们生活中必不可少的工具。众多游戏爱好者也越来越追求在同一设备上同时体验多个游戏的乐趣。而软件多开助手的出现为这一需求提供了创新的解决方案。 传统上…...

[linux] 输出文本文件的最后一列并去重

使用 awk 命令来实现这个需求。下面是一个示例命令&#xff1a; awk -F , {print $NF} a.txt | sort -u解释一下这个命令&#xff1a; awk -F , {print $NF} a.txt&#xff1a;使用逗号作为字段分隔符&#xff08;-F ,&#xff09;&#xff0c;打印每行的最后一个字段&#x…...

新能源车交直流充电解释

交流充电&#xff1a; 国家电网输出的电都是交流电&#xff0c;如下图所示&#xff0c;具有正弦切换规律的 而电动车的电池只能接受直流电&#xff0c;因此需要首先把交流电转换成直流电才能充进汽车电池&#xff0c;这就需要到了转换器OBC&#xff08;on-board Charger&#…...

Failed to connect to gitee.com port 443: Time out 连接超时提示【Bug已完美解决-鸿蒙开发】

文章目录 项目场景:问题描述原因分析:解决方案:解决方案1解决方案2:解决方案3:此Bug解决方案总结解决方案总结**心得体会:解决连接超时问题的三种方案**项目场景: 导入Sample时遇到导入失败的情况,并提示“Failed to connect to gitee.com port 443: Time out”连接超…...

【开源】基于Vue+SpringBoot的智慧家政系统

项目编号&#xff1a; S 063 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S063&#xff0c;文末获取源码。} 项目编号&#xff1a;S063&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询家政服…...

javaee实验:文件上传及拦截器的使用

目录 文件上传ModelAttribute注解实验目的实验内容实验过程项目结构编写代码结果展示 文件上传 Spring MVC 提供 MultipartFile 接口作为参数来处理文件上传。 MultipartFile 提供以下方法来获取上传的文件信息&#xff1a;  getOriginalFilename 获取上传的文件名字&#x…...

二分查找19(Leetcode540有序数组中的单一元素)-1

代码&#xff1a; 没用二分查找版&#xff1a; class Solution {public int singleNonDuplicate(int[] nums) {if(nums.length1){return nums[0];}for(int i1;i<nums.length-1;i){if(nums[i-1]nums[i]||nums[i]nums[i1]){continue;}else{return nums[i];}}if(nums[0]nums[…...

字节开源的netPoll底层LinkBuffer设计与实现

字节开源的netPoll底层LinkBuffer设计与实现 为什么需要LinkBuffer介绍设计思路数据结构LinkBufferNodeAPI LinkBuffer读 API写 APIbook / bookAck api 小结 本文基于字节开源的NetPoll版本进行讲解&#xff0c;对应官方文档链接为: Netpoll对应官方文档链接 netPoll底层有一个…...

《点云进阶》专栏文章目录

目录 一、PCL进阶篇* 二、Open3D进阶篇 一、PCL进阶篇 * PCL 最小二乘拟合二维直线PCL 最小二乘拟合空间直线PCL 计算点云的倒角距离&#xff08;Chamfer Distance&#xff09;PCL 点云配准精度评价——点到面的均方根误差PCL 可视化八叉树PCL 计算Hausdorff距离PCL 从变换矩…...

二分查找算法-查找最接近的元素Python实现(题目来源dotcpp: 2926)

题目描述 在一个非降序列中&#xff0c;查找与给定值最接近的元素。 输入格式 第一行包含一个整数n&#xff0c;为非降序列长度。1 < n < 100000。 第二行包含n个整数&#xff0c;为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。 第三行包含一个整数m&#x…...

debian11,debian 如何删除虚拟内存,交换分区

1.以管理员身份登录系统 2.输入以下命令以删除虚拟内存,该命令将关闭当前正在使用的虚拟内存。 sudo swapoff -a 3.输入以下命令以永久删除虚拟内存(硬盘内存文件)&#xff1a; sudo rm /swapfile 4.重启系统 总结:以上步骤将删除 Debian 11 中的虚拟内存。请注意&#xf…...

智能优化算法应用:基于人工大猩猩部队算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于人工大猩猩部队算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于人工大猩猩部队算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工大猩猩部队算法4.实验参数设…...

鼎捷受邀出席“中国制造业产品创新数字化国际峰会”,共话工业软件创新发展

11月30日&#xff0c; 由e-works数字化企业网、四川省智能制造创新中心、重庆制信信息技术服务有限公司主办的第十九届中国制造业产品创新数字化国际峰会在四川成都盛大开幕。 作为制造业研发信息化领域规模、影响力兼具的专业论坛&#xff0c;本届峰会以“构建基于数字底座的…...