Qt复习第二天

1、菜单栏工具栏状态栏

#include "mainwindow.h"
#include "ui_mainwindow.h"
#pragma execution_character_set("utf-8");
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//菜单QMenu *editMenu = ui->menubar->addMenu("编辑(&E)");QAction*action_copy = editMenu->addAction(QString("复制(&C)"));//前面还可以写个QIconaction_copy->setShortcut(QKeySequence("Ctrl + C"));//工具栏操作ui->toolBar->addAction(action_copy);//动作加入分组QActionGroup*group = new QActionGroup(this);QAction*action_L = group->addAction(("左对齐(&L)"));QAction*action_R = group->addAction(("左对齐(&R)"));action_L->setCheckable(true);action_R->setCheckable(true);editMenu->addSeparator();//添加分割线//工具栏添加部件QToolButton*toolBtn = new QToolButton(this);toolBtn->setText("颜色");//工具栏设置菜单QMenu *colorMenu = new QMenu(this);colorMenu->addAction("绿色");colorMenu->addAction("红色");toolBtn->setMenu(colorMenu);toolBtn->setPopupMode(QToolButton::MenuButtonPopup);//弹出的菜单ui->toolBar->addWidget(toolBtn);QSpinBox*spinBox = new QSpinBox(this);ui->toolBar->addWidget(spinBox);//状态栏显示信息ui->statusbar->showMessage(QString("欢迎。。。"),3000);//添加永久的QLabel*tag = new QLabel("wcoao");ui->statusbar->addPermanentWidget(tag);}MainWindow::~MainWindow()
{delete ui;
}

实现效果如下:
在这里插入图片描述
在这里插入图片描述

2、自定义菜单栏

1、需要继承于QWidgetAction
写一个Myaction类

#ifndef MYACTION_H
#define MYACTION_H#include <QWidgetAction>
#include <QObject>
#include<QLineEdit>
class Myaction : public QWidgetAction
{Q_OBJECT
public:explicit Myaction(QObject *parent = nullptr);protected:QWidget*createWidget(QWidget*parent);signals:void getText(const QString&string);private slots:void sendText();private:QLineEdit*lineedit;
};#endif // MYACTION_H#include "myaction.h"
#include<QSplitter>
#include<QLabel>
Myaction::Myaction(QObject *parent): QWidgetAction{parent}
{lineedit = new QLineEdit;connect(lineedit,&QLineEdit::returnPressed,this,&Myaction::sendText);}QWidget *Myaction::createWidget(QWidget *parent)
{//判断父部件是否继承菜单或者工具栏//如果创建部件的子部件并放回子部件if(parent->inherits("QMenu")||parent->inherits("QToolBar")){QSplitter *splitter = new QSplitter(parent);QLabel*label = new QLabel("插入文本");splitter->addWidget(label);splitter->addWidget(lineedit);return splitter;}return 0;
}void Myaction::sendText()
{emit getText(lineedit->text());lineedit->clear();
}QMainWindow::Myaction*action = new Myaction;QMenu*menu = ui->menubar->addMenu("编辑(&E)");menu->addAction(action);connect(action,&Myaction::getText,this,&MainWindow::setText);void MainWindow::setText(const QString &str)
{ui->textEdit->setText(str);
}

3、富文本

#include "mainwindow.h"
#include "ui_mainwindow.h"#include<QTextFrame> //富文本
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//获取文档对象QTextDocument *document = ui->textEdit->document();//获取根框架QTextFrame *rootFrame = document->rootFrame();//文档格式框架QTextFrameFormat format;format.setBorderBrush(Qt::red);format.setBorder(3);//文档框架设置格式rootFrame->setFrameFormat(format);//设置文本边框风格QTextFrameFormat frameFormat;frameFormat.setBackground(Qt::lightGray);frameFormat.setMargin(10);frameFormat.setPadding(15);frameFormat.setBorder(2);frameFormat.setBorderStyle(QTextFrameFormat::BorderStyle_DotDash);QTextCursor cursor = ui->textEdit->textCursor();cursor.insertFrame(frameFormat);
}MainWindow::~MainWindow()
{delete ui;
}

效果:
在这里插入图片描述

4、文本框块字符格式

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QAction>
#include<QTextDocument>
#include<QTextFrame>
#include<QDebug>
#include<QTextBlockFormat>
#pragma execution_character_set("utf-8");
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QAction *action_textFrame = new QAction("框架",this);connect(action_textFrame,&QAction::triggered,this,&MainWindow::showtextFrame);QAction*action_textBlock = new QAction("文本块",this);connect(action_textBlock,&QAction::triggered,this,&MainWindow::showTextBlock);QAction*action_setText = new QAction("字体",this);connect(action_setText, SIGNAL(triggered(bool)), this, SLOT(setTextFont(bool)));ui->toolBar->addAction(action_setText);ui->toolBar->addAction(action_textBlock);ui->toolBar->addAction(action_textFrame);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::showtextFrame() //文本框架
{QTextDocument* document = ui->textEdit->document();QTextFrame* frame = document->rootFrame();QTextFrame::iterator it;for (it = frame->begin(); !it.atEnd(); ++it){//获取当前框架的指针QTextFrame* childframe = it.currentFrame();QTextBlock childBlock = it.currentBlock();if (childframe){qDebug() << "frame";}else if (childBlock.isValid()){qDebug() << "block " << childBlock.text();}}
}void MainWindow::setTextFont(bool checked)
{if(!checked){QTextCursor cursor= ui->textEdit->textCursor();//文本块格式QTextBlockFormat blockFormat;//居中对齐blockFormat.setAlignment(Qt::AlignCenter);cursor.insertBlock(blockFormat);//字符格式QTextCharFormat charFormat;//字符背景色charFormat.setBackground(Qt::lightGray);//前景色charFormat.setForeground(Qt::blue);//字体charFormat.setFont(QFont(QString("宋体"),12,QFont::Bold,true));//下划线charFormat.setFontUnderline(true);//设置字符格式cursor.setCharFormat(charFormat);cursor.insertText("哈哈哈");}qDebug()<<checked;
}void MainWindow::showTextBlock()
{QTextDocument *document = ui->textEdit->document();QTextBlock block = document->firstBlock();for(int i = 0;i<document->blockCount();i++){qDebug()<<QString("文本块:%1,文本首行行号为: %2,长度为%3,内容为%4").arg(i).arg(block.firstLineNumber()
).arg(block.length()).arg(block.text());block = block.next();}
}

效果如下:
在这里插入图片描述

5、文档插入表格列表图片

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QAction>
#include<QTextTableFormat>
#include<QTextCursor>
#include<QTextListFormat>
#include<QFileDialog>
#include<QImageReader>
#include<QTextImageFormat>
#pragma execution_character_set("utf-8");
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QAction*action_table = new QAction("表格",this);connect(action_table,SIGNAL(triggered(bool)),this,SLOT(insertTable()));QAction*action_list = new QAction("列表",this);connect(action_list,SIGNAL(triggered(bool)),this,SLOT(insertList()));QAction*action_pic = new QAction("表格",this);connect(action_pic,SIGNAL(triggered(bool)),this,SLOT(insertImage()));ui->toolBar->addAction(action_list);ui->toolBar->addAction(action_table);ui->toolBar->addAction(action_pic);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::insertTable() //插入图
{QTextCursor cursor = ui->textEdit->textCursor();QTextTableFormat format;//表格格式format.setCellSpacing(2);format.setCellPadding(10);cursor.insertTable(3,3,format);
}void MainWindow::insertList() //插入列表
{QTextListFormat format;//列表格式format.setStyle(QTextListFormat::ListDecimal);//数字编号ui->textEdit->textCursor().insertList(format);
}void MainWindow::insertImage()
{QString filepath = QFileDialog::getOpenFileName(this,"选择图片",".",
"JPEG(*.jpg *.jpeg);;""GIF(*.gif);;""PNG(*.png)");QUrl url(QString("file://%1").arg(filepath));QImage image = QImageReader(filepath).read();QTextDocument*document = ui->textEdit->document();//文档添加图片资源document->addResource(QTextDocument::ImageResource,url,QVariant(image));QTextCursor cursor = ui->textEdit->textCursor();QTextImageFormat imgFormat;imgFormat.setWidth(image.width());imgFormat.setHeight(image.height());imgFormat.setName(url.toString());cursor.insertImage(imgFormat);}

效果展示:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3029500.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

重生我是嵌入式大能之串口调试UART

什么是串口 串口是一种在数据通讯中广泛使用的通讯接口&#xff0c;通常我们叫做UART (通用异步收发传输器Universal Asynchronous Receiver/Transmitter)&#xff0c;其具有数据传输速度稳定、可靠性高、适用范围广等优点。在嵌入式系统中&#xff0c;串口常用于与外部设备进…

【数据结构与算法】常见的排序算法

文章目录 排序的概念冒泡排序&#xff08;Bubble Sort&#xff09;插入排序&#xff08;Insert Sort&#xff09;选择排序&#xff08;Select Sort&#xff09;希尔排序&#xff08;Shell Sort&#xff09;写法一写法二 快速排序&#xff08;Quick Sort&#xff09;hoare版本&a…

从零开始搭建Ubuntu CTF-pwn环境

下面就将介绍如何从零搭建一个CTF-pwn环境&#xff08;由于学习仍在进行&#xff0c;故一些环境如远程执行环境还没有搭建的经历&#xff0c;如今后需要搭建&#xff0c;会在最后进行补充&#xff09; 可以在ubuntu官方网站上下载最新的长期支持版本:(我下载的是22.04版本) h…

AXI4写时序在AXI Block RAM (BRAM) IP核中的应用

在本文中将展示描述了AXI从设备&#xff08;slave&#xff09;AXI BRAM Controller IP核与Xilinx AXI Interconnect之间的写时序关系。 1 Single Write 图1是一个关于32位宽度的BRAM&#xff08;Block RAM&#xff09;的单次写入操作的例子。这个例子展示了如何向地址0x1000h…

如何查看centos7中Java在哪些路径下

在 CentOS 7 上&#xff0c;你可以通过几种方式查找安装的 Java 版本及其路径。以下是一些常用的方法&#xff1a; 1. 使用 alternatives 命令 CentOS 使用 alternatives 系统来管理同一命令的多个版本。你可以使用以下命令来查看系统上所有 Java 安装的配置&#xff1a; su…

【JVM】了解JVM规范中的虚拟机结构

目录 JVM规范的主要内容 1&#xff09;字节码指令集(相当于中央处理器CPU) JVM指令分类 2&#xff09;Class文件的格式 3&#xff09;数据类型和值 4&#xff09;运行时数据区 5&#xff09;栈帧 6&#xff09;特殊方法 7&#xff09;类库 JVM规范的主要内容 1&#…

小程序如何确定会员身份并批量设置会员积分或余额

因为一些原因&#xff0c;商家需要从其它系统里面批量导入会员&#xff0c;确定会员身份&#xff0c;然后给他们设置对应的账户余额。下面&#xff0c;就具体介绍如何进行这种操作。 一、客户进入小程序并绑定手机号 进入小程序&#xff1a;客户打开小程序&#xff0c;系统会自…

在51单片机里面学习C语言

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「&#xff23;语言的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 说出来你们可能都…

创新案例|搜索新王Perplexity如何构建生成式AI产品开发的新模式

Perplexity AI&#xff1a;生成式搜索的颠覆者 刚刚成立满两年&#xff0c;Perplexity AI已经变成了我日常频繁使用的工具&#xff0c;甚至取代了我对 Google搜索的依赖 —— 而我并非个案。该公司仅凭不到 50 名员工&#xff0c;已经吸引了数千万用户。他们目前的年收入超过 …

浅析扩散模型与图像生成【应用篇】(二十三)——Imagic

23. Imagic: Text-Based Real Image Editing with Diffusion Models 该文提出一种基于文本的真实图像编辑方法&#xff0c;能够根据纯文本提示&#xff0c;实现复杂的图像编辑任务&#xff0c;如改变一个或多个物体的位姿和组成&#xff0c;并且保持其他特征不变。相比于其他文…

YOLO系列笔记(十)—— 基础:卷积层及其计算公式

卷积层及其计算公式 前言定义与功能计算过程与输出尺寸没有填充的情况有填充的情况 网络结构中的表示分析一&#xff1a;数字的含义分析二&#xff1a;分支的含义 前言 卷积层是在深度学习领域中非常常见、基础且重要的一种神经网络层。许多初学者可能会对卷积层的功能、其计算…

JDK不同版本里中国夏令时时间

什么是夏令时&#xff1f; 夏令时&#xff0c;&#xff08;Daylight Saving Time&#xff1a;DST&#xff09;&#xff0c;也叫夏时制&#xff0c;又称“日光节约时制”和“夏令时间”&#xff0c;是一种为节约能源而人为规定地方时间的制度&#xff0c;在这一制度实行期间所采…

部署xwiki服务需要配置 hibernate.cfg.xml如何配置?

1. 定位 hibernate.cfg.xml 文件 首先&#xff0c;确保您可以在 Tomcat 的 XWiki 部署目录中找到 hibernate.cfg.xml 文件&#xff1a; cd /opt/tomcat/latest/webapps/xwiki/WEB-INF ls -l hibernate.cfg.xml如果文件存在&#xff0c;您可以继续编辑它。如果不存在&#xff…

KaiwuDB 参编的《分析型数据库技术要求》标准正式发布

近期&#xff0c;中国电子工业标准化技术协会正式发布团体标准《分析型数据库技术要求》&#xff08;项目号&#xff1a;T-CESA 2023-006&#xff09;。该标准由中国电子技术标准化研究院、KaiwuDB&#xff08;上海沄熹科技有限公司&#xff09; 等国内 16 家企业联合起草&…

Win11安装Docker Desktop运行Oracle 11g 【详细版】

oracle docker版本安装教程 步骤拉取镜像运行镜像进入数据库配置连接数据库&#xff0c;修改密码Navicat连接数据库 步骤 拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g运行镜像 docker run -d -p 1521:1521 --name oracle11g registry.cn-ha…

《QT实用小工具·六十二》基于QT实现贝塞尔曲线画炫酷的波浪动画

1、概述 源码放在文章末尾 该项目实现了通过贝塞尔曲线画波浪动画&#xff0c;可控制 颜色密度速度加速度 安装与运行环境 语言&#xff1a;C 框架&#xff1a;Qt 11.3 平台&#xff1a;Windows 将屏幕水平平均分为10块&#xff0c;在一定范围内随机高度的12个点&#xff08;…

提取网页元数据的Python库之lassie使用详解

概要 Lassie是一个用于提取网页元数据的Python库,它能够智能地抓取网页的标题、描述、关键图像等内容。Lassie的设计目的是为了简化从各种类型的网页中提取关键信息的过程,适用于需要预览链接内容的应用场景。 安装 安装Lassie非常简单,可以通过Python的包管理器pip进行安…

如何自定义Markdown中插入图片的位置

工作中常常需要在VsCode下写Markdown笔记&#xff0c;在写笔记的过程中不免需要插入图片。  Markdown中插入笔记的操作往往是比较繁琐的&#xff0c;比如&#xff1a;在文档中引用本地某个文件夹下的图片&#xff0c;首先需要你先保存图片到本地路径&#xff0c;然后需要你在文…

多模态模型Mini-Gemini:代码模型数据均开源,MiniCPM小钢炮2.0全家桶四连发,可以在Android 手机端上运行的大模型,效果还不错

多模态模型Mini-Gemini&#xff1a;代码模型数据均开源&#xff0c;MiniCPM小钢炮2.0全家桶四连发&#xff0c;可以在Android 手机端上运行的大模型&#xff0c;效果还不错。 多模态模型Mini-Gemini&#xff1a;代码模型数据均开源 香港中文大学终身教授贾佳亚团队提出多模态模…

【C++STL详解(十)】--------priority_queue的模拟实现

目录 前言 一、堆的向上调整算法 二、堆的向下调整算法 三、优先队列模拟实现 Ⅰ、接口总览 Ⅱ、各个接口实现 1.构造函数 2.仿函数 3.向上调整 4.向下调整 5.其余接口 Ⅲ、完成代码 前言 上节内容我们简单的介绍了关于priority_queue的使用内容&#xff0c;我们明白…