Qt样式表总结

2023-11-09

概念

  • Qt的样式表主要是受到CSS的启发,通过调用setStyleSheet(),可以为一个独立的子部件、整个窗口、甚至整个应用程序制定一个样式表。

  • 样式表具有继承关系,例如为一个QWidget类设置了样式表,那么QWidget类及其子类都会使用这个样式表

  • 可以在Qt帮助文档中检索Qt Style Sheets Reference关键字查看相关说明。

语法

基本语法格式

下面列出了一些基本组合,可以任意组合,各个组合间通过,分割即可。

选择器
{
	属性:;
}

QPushButton
{
	color: red;
}
选择器 : 状态
{
	属性:;
}

QPushButton : hover
{
	color: red;
}
选择器 :: 辅助控制器
{
	属性 :;
}

QCheckBox :: indicator
{
	color : red;
}
选择器 : 状态
{
	属性 :;
}

QPushButton : hover
{
	color : red;
}
选择器 :: 辅助控制器 : 状态
{
	属性 :;
}

QTabBar::tab:selected, QTabBar::tab:hover
{
	background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
									stop: 0 #E0E0E0, stop: 1 #FFFFFF);
}

选择器 (selector)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
示例1
样式同时应用于QLineEdit、QPushButton

#
QLineEdit, QPushButton
{
	color: green;
	background-color: rgb(0, 0, 0);
}

示例2
样式应用于readOnly属性为trueQLineEditchecked属性为trueQCheckBox

QLineEdit[read-only="true"], QCheckBox[read-only="true"]
{
	color: green;
	background-color: rgb(0, 0, 0);
}

示例3
为界面组件使用QObject::setProperty()设置动态属性,样式将应用于属性“required”true的组件。

lineEdit->setProperty("required", "true");
checkBox->setProperty("required", "true");


*[required="true"]
{
	background-color: lime;
}

子控件 (sub-control)

子控件是相对于选择器而存在的,可以理解为选择了一个子部件,例如对于一个QCheckBox,可以分成两部分:文本部分和可以可以点击的复选框部分,我们想要单独设置整个可点击的复选框,就会用到子控件::indicator在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
下面给出一些示例:

QMainWindow::separator{
    border: 1px solid #999999;
    border-style: outset;
    width: 4px;
    height: 4px;
}
Splitter::handle{
    border: 1px solid #999999;
    border-style: outset;
    width: 4px;
    height: 4px;
}
QSplitter::handle:hover{/*splitter->handle(1)->setAttribute(Qt::WA_Hover, true);才生效*/
    border-color: #EA2;
}
QSplitter::handle:pressed{
    border-color: #59F;
}

伪状态 (pseudo-states)

每个窗口部件都有各种状态(例如鼠标悬停在该控件上),通过加上伪装态,可以对部件在某个具体状态下的样式表进行设置。
伪状态取反:在伪状态前加一个感叹号!。例如下面是定义了readonly属性为falseQLineEdit的字体颜色和背景色:

QLineEdit:!read-only
{
	color: green;
	background-color: rgb(0, 0, 0);
}

在这里插入图片描述

伪状态串联使用:相当于“逻辑与”的计算。下面是当鼠标移动到一个被勾选了的QCheckBox组件上方时,其样式

QCheckBox:checked:hover
{
	color: red;
}

在这里插入图片描述

伪状态并联使用:相当于“逻辑或”。下面表示当鼠标移动到QCheckBox上方或者QCheckBox组件被勾选时,样式都被应用:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
子控件使用伪状态:例如下面定义了QCheckBoxindicatorcheckedunchecked两种状态下的背景色:

QCheckBox::indicator:checked
{
	background-color: yellow;
}

QCheckBox::indicator:unchecked
{
	background-color: blue;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

盒模型 (The Box model)

在这里插入图片描述
每个界面组件都可以用盒模型来表示,模型由四个同心矩形表示:
缺省的情况下,marginborder-widthpadding属性缺省值为0,这种情况下,四个同心矩形就是重合的一个矩形。

  • CONTENT:是最里面的矩形,显示内容的矩形区域,它绘制窗口部件内容(如文字,图片)。如QLineEdit用于显示文字的区域,min-widthmax-widthmin-heightmax-height属性定义最大/最小宽度或高度,就是定义这个矩形区。例如:
QLineEdit
{
    min-height: 10px;
}

在这里插入图片描述

QLineEdit
{
    min-height: 50px;
}

在这里插入图片描述

  • PADDING:是包围content的矩形区域,主要是窗口部件内容与边缘线(border)之间的缝隙,通过padding属性可以定义padding的宽度,padding-toppadding-bottompadding-leftpadding-right分别定义padding的上下左右。例如:
QLineEdit
{
	padding-top: 0px;
	padding-right: 0px;
	padding-left: 0px;
	padding-bottom: 20px;
}

在这里插入图片描述

QLineEdit
{
	padding-top: 30px;
	padding-right: 0px;
	padding-left: 30px;
	padding-bottom: 0px;
}

在这里插入图片描述

  • BORDER:是包围padding的边框,通过border属性(border-widthborder-styleborder-color)可以定义边框的线宽、线型和颜色,也可以分别定义border的上、下、左、右的线宽和颜色。使用border-radius可以定义边框转角的圆弧半径,从而构造具有圆角矩形的编辑或按钮等组件。例如:
QLineEdit {
	border-width: 3px;
	border-radius: 10px;
	border-color: green;
	padding-left: 20px;
}

在这里插入图片描述

#通过border-radius、min-width、min-height等属性可以设计圆形的按钮
QPushButton
{
	border: 2px groove red;
	border-radius: 30px;
	min-width: 60px;
	min-height: 60px;
}

在这里插入图片描述
通过border-image属性还可以为组件设置背景图片,图片会填充border矩形框之内的区域,一般使用材质图片设置背景,以使界面具有统一的特点。而background-image则是原比例填充,若控件大小小于图片大小,则仅显示一部分图片,若控件大小大于图片大小,则将图片进行重复。例如:
在这里插入图片描述

QTextEdit
{
	border-image: url("369.jpg");
}

在这里插入图片描述在这里插入图片描述

QTextEdit
{
	background-image: url("369.jpg");
}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

样式表使用方法

方法一: 使用Qt Designer的样式表编辑器

在这里插入图片描述
优点:操作便捷,直观。
缺点:这样设计的样式表对应用程序是固定的,无法取得换肤的效果,而且需要为每个窗体都涉及样式表,重复性工作太大.

方式二: setStyleSheet函数

使用QApplicationsetStyleSheet函数可以为应用程序全局设置样式
在这里插入图片描述
使用QXXX::setStyleSheet函数可以为一个窗口、一个对话框、一个界面组件设置样式。例如调用主窗口MainWindow以及其子控件QPushButtonsetStyleSheet函数。
在这里插入图片描述
还可以预先将编写好的样式表存储在.qss文件中,使用setStyleSheet函数加载.qss文件。

setStyleSheet("MyQssFile.qss");

样式的明确性

为了避免样式冲突,系统定义了以下一系列的样式明确性

确定法则的明确性,Qt样式表遵循CSS2的规定

  • 具有伪状态的选择器被认为比没有伪状态的选择器明确性更强。例如:下面两条语法中,第一条的明确性更高,因此第一条生效
QPushButton:hover
{	
	color: white;
}	

QPushButton
{
	color: green;
}
  • 如果两个选择器具有相同的明确性,则以法则出现的先后顺序为准,后出现的法则起作用。例如:下面的第二个生效
QPushButton:hover
{	
	color: white;
}	

QPushButton:enabled
{
	color: green;
}
  • 父子关系的两个类作为选择器,具有相同的明确性。例如:下面两个选择器的明确性相同,所以只依赖于语句的先后顺序,因此第二个生效
QPushButton
{	
	color: white;
}	

QAbstractButton
{
	color: green;
}

样式定义的级联性

在这里插入图片描述
在这里插入图片描述

  • 样式定义可以在qApp、窗口或一个具体组件中定义,任何一个组件的样式是其父组件、父窗口和qApp的样式的融合
  • 当出现冲突时,组件会使用离自己最近的样式定义,即按顺序使用组件自己的样式、或父组件的样式定义、或父窗口的样式定义,或qApp的样式定义,而不考虑样式选择器的确定性

例如上面的多个setStyleSheet叠加,最终生效的是ui->pushButton->setStyleSheet("QPushButton {color: green}");

示例汇总

QGroupBox

QGroupBox 
{
	background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
									stop: 0 #E0E0E0, stop: 1 #FFFFFF);
}

在这里插入图片描述

QGroupBox 
{
	background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
									stop: 0 #E0E0E0, stop: 1 #FFFFFF);
	max-width:200px;
}

在这里插入图片描述

QGroupBox 
{
	background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
									stop: 0 #E0E0E0, stop: 1 #FFFFFF);
	padding-bottom: 10px;
}

在这里插入图片描述

QGroupBox 
{
	background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
									stop: 0 #E0E0E0, stop: 1 #FFFFFF);
	padding-top: 30px;
}

在这里插入图片描述

QGroupBox 
{
	background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
									stop: 0 #E0E0E0, stop: 1 #FFFFFF);
	padding-left: 60px;
}

在这里插入图片描述

QGroupBox 
{
	background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
									stop: 0 #E0E0E0, stop: 1 #FFFFFF);
	padding-bottom: 15px;
	padding-top: 20px;
	padding-left: 3px;
	padding-right: 3px;
}

在这里插入图片描述

QGroupBox 
{
	background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
									stop: 0 #E0E0E0, stop: 1 #FFFFFF);
	padding-bottom: 15px;
	padding-top: 20px;
	padding-left: 3px;
	padding-right: 3px;
	border: 1px solid #FF0000;
}

在这里插入图片描述

QGroupBox 
{
	background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
									stop: 0 #E0E0E0, stop: 1 #FFFFFF);
	padding-bottom: 15px;
	padding-top: 20px;
	padding-left: 3px;
	padding-right: 3px;
	border: 1px solid #FF0000;
	border-radius: 20px;
}

在这里插入图片描述

QGroupBox 
{
	background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
									stop: 0 #E0E0E0, stop: 1 #FFFFFF);
	padding-bottom: 15px;
	padding-top: 20px;
	padding-left: 3px;
	padding-right: 3px;
	border: 1px solid #FF0000;
	border-radius: 20px;
	margin-left: 30px;
}

在这里插入图片描述

QGroupBox 
{
	background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
									stop: 0 #E0E0E0, stop: 1 #FFFFFF);
	padding-bottom: 15px;
	padding-top: 20px;
	padding-left: 3px;
	padding-right: 3px;
	border: 4px solid #FF0000;
	border-radius: 20px;
	margin-left: 30px;
	margin-bottom: 30px;
}

在这里插入图片描述

QGroupBox 
{
	background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
									stop: 0 #E0E0E0, stop: 1 #FFFFFF);
	padding-bottom: 15px;
	padding-top: 20px;
	padding-left: 3px;
	padding-right: 3px;
	border: 2px solid #FF0000;
	border-radius: 20px;
	margin-left: 30px;
	margin-bottom: 30px;
}

QGroupBox::title {
  subcontrol-origin: border;
  subcontrol-position: top center;
  background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
									stop: 0 #FF0ECE, stop: 1 #FFFFFF);
}

在这里插入图片描述

QListView

在这里插入图片描述

QListView {
    show-decoration-selected: 1; /* make the selection span the entire width of the view */
}

QListView::item:alternate {
    background: #EEEEEE;
}

QListView::item:selected {
    border: 1px solid #6a6ea9;
}

QListView::item:selected:!active {
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                stop: 0 #ABAFE5, stop: 1 #8588B2);
}

QListView::item:selected:active {
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                stop: 0 #6a6ea9, stop: 1 #888dd9);
}

QListView::item:hover {
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                stop: 0 #FAFBFE, stop: 1 #DCDEF1);
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

QListView {
    show-decoration-selected: 1; /* make the selection span the entire width of the view */
	font-size: 20px;
	font-weight: bold;
	font-family: "New Century Schoolbook";
}

QListView::item:alternate {
    background: #EEEEEE;
}

QListView::item:selected {
    border: 1px solid #6a6ea9;
}

QListView::item:selected:!active {
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                stop: 0 #ABAFE5, stop: 1 #8588B2);
}

QListView::item:selected:active {
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                stop: 0 #6a6ea9, stop: 1 #888dd9);
}

QListView::item:hover {
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                stop: 0 #FAFBFE, stop: 1 #DCDEF1);
}

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt样式表总结 的相关文章

  • 如何在 Qt Creator 中编辑 QtWebKit 的右键上下文菜单?

    好吧 这是我的困境 我正在使用 Qt Creator 制作一个使用 Webkit 的简单应用程序 我认为 Qt Creator 会有一种简单的方法来使用信号和槽编辑器编辑右键单击上下文菜单 但事实证明这不是真的 我知道 webkit 有与上
  • 有没有办法向 QListView 添加部分?

    我正在使用 Qt5 2 和 C 来实现一个应用程序 需要显示一个列表 其中包含类似于下面的示例图像的部分 source ngo hung com http www ngo hung com files images contact list
  • 将 jstring 转换为 QString

    我正在调用一个返回字符串的 Java 函数 QAndroidJniObject obj QAndroidJniObject callStaticObjectMethod
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • PyQt4 QPalette 不工作

    btn QtGui QPushButton Button self palettes btn palette palettes setColor btn backgroundRole QtCore Qt green btn setPalet
  • 如何doxygen注释Qt属性?

    我想将 Doxygen 注释附加到我的 Q PROPERTY 例如 song h class Song public QObject Q OBJECT private Q PROPERTY QString title READ title
  • 针对初学者的 QT 商业许可证与非商业许可证 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 QT 许可似乎非常反学习 因为据我所知 用它开发的任何东西都只能是商业的当且仅当 its entire开发是在使用商业许可证的情况下完成的
  • Qt 5.1.1 与 Visual Studio 2012 - 这些 QT 版本无法访问

    打开 Visual Studio 时出现此错误 我安装自http qt project org downloads http qt project org downloads 适用于 Windows 64 位的 Qt 5 1 1 VS 20
  • 连接到 QNetworkReply::error 信号

    我正在使用 Qt5 的新连接语法 QNetworkReply 有一个名为error http qt project org doc qt 5 0 qtnetwork qnetworkreply html error 2还有一个函数叫做err
  • 如何在Android中使用QML - QWebView

    我想在 Android 中部署一个 YouTube 应用程序 但它只能在我的电脑上运行 在安卓上不起作用 它不加载任何视频 问题仅出在 QWebView 上 我使用了与此类似的代码 http doc qt io archives qt 5
  • 为什么 QT 设计器重新调整大小或不允许我缩小或展开小部件或按钮?

    很多时候 在使用 QT 设计器时 我发现自己需要通过缩小或扩展来调整事物的大小 每当我尝试这样做时 程序都不允许我这样做 而只是恢复到将对象放置在窗口中时给我的原始默认大小 无论我的布局如何 为什么要这样做 是否有可能改变这一点 以便我可以
  • 如何向 PyQt5 GUI 添加线程?

    所以我使用 QT Designer 创建了一个 GUI 它工作得很好 但在更复杂的调用中 它不会更新主窗口并锁定 我想运行我的CustomComplexFunction 在根据不断变化的后端信息更新主窗口中的文本编辑时 我希望它每 2 秒运
  • Qt:更改 Mac OS X 上的应用程序 QMenuBar 内容

    我的应用程序对多个 页面 使用 QTabWidget 其中顶级菜单根据用户所在的页面而变化 我的问题是 尝试重新创建菜单栏的内容会导致严重的显示问题 它在除 Mac OS X 之外的所有平台上按预期使用第一种和第三种样式 尚未测试第二种 但
  • 使用 QGraphicsScene 和 QGraphicsView 在 Qt 中开始基于 Tile 的游戏

    我将开始在 Qt 中编写基于 2D 图块的游戏 并阅读 QGraphicsScene 和 QGraphicsView 类 这些类旨在显示和处理大量 2D 对象 我的问题是 使用 QGraphicsScene 创建一个包含大量图块的世界是否可
  • Qt 相当于 .NET 数据绑定吗?

    Qt 中是否有相当于 NET 数据绑定的功能 我想使用引用数据库中特定实体的 QString 填充一些组合框和其他小部件 但是 如果我可以将数据绑定到这些字符串 而不是基于新的组合框选择再次查询数据库 或者基于构建我自己的将使用 QStri
  • Qt - 如何使用 QNetworkAccessmanager 获取响应文本

    这是我的代码 Widget Widget manager new QNetworkAccessManager this connect manager SIGNAL finished QNetworkReply this SLOT repl
  • 使用 C++ 访问 Azure blob 存储 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 QWT 构建时出错

    我收到一个错误 undefined reference to QwtPlot QwtPlot QWidget 当我尝试构建我的项目时 即使设置中一切看起来都很好 在我的 CmakeLists txt 中我有 include director
  • 一个具有完全透明背景的qt小部件

    我需要创建一个 qt 小部件 它将充当其他一些小部件的父级 并对它们进行排序 现在的问题是如何使其背景完全透明 我想这样做 struct Imp Imp QWidget parent thisWidget new QWidget paren
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se

随机推荐

  • JavaScript 数组塌陷

    概念 数组塌陷 在对数组进行操作的时候 会使数组的长度产生变化 同时 操作的数组那个项的下一个索引会被跳过 从而造成数组的某项会被跳过 这种叫做数组塌陷现象 例子 let arr 1 2 3 3 3 3 3 3 3 4 5 6 7 8 9
  • Nodejs 快速学习

    1 Nodejs快速入门 1 1 安装 官网 https nodejs org zh cn download 一路next安装即可 cmd查看 是否 安装成功 1 2 什么是Nodejs 注意 ES6语法完全兼容 1 3 第一个Nodejs
  • [python+nltk] 自然语言处理简单介绍和NLTK坏境配置及入门知识(一)

    本文主要是总结最近学习的论文 书籍相关知识 主要是Natural Language Pracessing 自然语言处理 简称NLP 和Python挖掘维基百科Infobox等内容的知识 此篇文章主要参考书籍 Natural Language
  • 恶意URL数据集

    一些URL数据集的收集来源 1 https openphish com feed txt 2 https ransomwaretracker abuse ch blocklist 3 https www phishtank com 4 ht
  • SnackBar 简单使用

    1 简介 Snackbar是Android Support Design Library库中的一个控件 可以在屏幕底部快速弹出消息 比Toast更加好用 可以添加点击行为 多用于结合协调布局使用 CoordinatorLayout impl
  • 全国身份证身份数据库sql(2021最新)

    为方便下载 已经将 sql 文件上传CSDN 链接 http download csdn net download leiflyy 10143794 insert into areazone areazone province city z
  • linux的dirty page回写磁盘过程中是否允许并发写入更新page?

    概述 众所周知Linux内核write系统调用采用pagecache机制加速写入过程 避免write系统调用长时间block应用进程 用户态进程执行write调用的时候 内核只是将用户态buffer copy到内核的pagecache当中
  • Golang Gorm 创建HOOK

    创建的时候 在插入数据之前 想要做一些事情 钩子函数比较简单 就是实现before create的一个方法 package main import gorm io driver mysql gorm io gorm type Student
  • maven安装

    1 maven 安装 需要使用maven命令 在需要的的操作系统中 安装maven插件 这里我用是Windows操作系统 2 在Windows安装maven 1 安装jdk 2 下载地址http maven apache org 3 解压后
  • Streamlit 讲解专栏(九):深入探索布局和容器

    文章目录 1 前言 2 st sidebar 在侧边栏增添交互元素 2 1 将交互元素添加至侧边栏 2 2 示例 在侧边栏添加选择框和单选按钮 2 3 特殊元素的注意事项 3 st columns 并排布局多元素容器 3 1 插入并排布局的
  • 揭秘最领先的Llama2中文大模型!

    导语 国内最大的开源社区 Llama中文社区率先完成了国内首个真正意义上的中文版Llama2 13B大模型 从模型底层实现了Llama2中文能力的大幅优化和提升 毋庸置疑 中文版Llama2一经发布开启了国内大模型新时代 全球最强 但中文短
  • Mybatis-动态sql和分页

    目录 一 什么是Mybatis动态分页 二 mybatis中的动态SQL 在BookMaaper xml中写sql BookMapper BookBiz接口类 BookBizImpl实现接口类 demo测试类 编辑 测试结果 三 mybat
  • C语言创建一个二叉树

    如何创建一个二叉树 先序遍历 中序遍历 include
  • 应用程序图标丢失问题的解决办法?

    如果是某一特定文件类型的 根据扩展名 的问题 是文件关联的问题 去注册表里寻找答案吧 用setup factory制作的安装包 之前一直都挺正常的 今天怎么试了一下 有时有图标有时没有 奇怪的很 于是追查了一下 原来我是因为我是在32位系统
  • 在cmd中,如何使用cd进入指定文件目录

    1 要进入的磁盘与当前磁盘一致 例如 cd C Program Files x86 Google Chrome Application 2 进入到其他磁盘 例如 cd d D JAVA codes 01 1 4 或者下面的方式 直接输入磁盘
  • Unity中Cg的基本语法和使用

    Cg是类似于C语言的发展起来的图形编程语言 Cgraphics 它的很多表达式if else 和C语言非常相像 也和C 非常相像 由于Shader是写给显卡执行的 所以没有输出语句来调试 很多地方调试不了 只能靠Unity编辑器来帮我们报错
  • valgrind和Kcachegrind性能分析工具详解

    作者 zhuyong 原文地址 一 valgrind介绍 valgrind是运行在Linux上的一套基于仿真技术的程序调试和分析工具 用于构建动态分析工具的装备性框架 它包括一个工具集 每个工具执行某种类型的调试 分析或类似的任务 以帮助完
  • web安全常用网络扫描端口漏洞利用

    端口 服务 入侵方式 21 ftp tftp vsftpd文件传输协议 爆破 嗅探 溢出 后门 22 ssh远程连接 爆破 openssh漏洞 23 Telnet远程连接 爆破 嗅探 弱口令 25 SMTP邮件服务 邮件伪造 53 DNS域
  • 如何快速搭建个人网站(服务器配置篇)

    关于服务器的购买和域名注册可以参考我的这篇博客 在使用之前 建议小白用户先下载一个Vmware 安装一个Ubuntu的虚拟环境学习一下linux的基础命令 一 远程服务器的连接 服务器购买好了以后我们需要进行远程连接我们的服务器 我个人推荐
  • Qt样式表总结

    概念 Qt的样式表主要是受到CSS的启发 通过调用setStyleSheet 可以为一个独立的子部件 整个窗口 甚至整个应用程序制定一个样式表 样式表具有继承关系 例如为一个QWidget类设置了样式表 那么QWidget类及其子类都会使用