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 4.7.1 静态库时,“找不到 -ljscore”

    我尝试从最新的源构建静态 Qt 库 但出现以下错误 usr bin ld cannot find ljscore collect2 ld returned 1 exit status 如何解决这个问题呢 这是 Qt 构建系统中自 4 7 0
  • QT/QML Android App,点击通知栏时打开应用程序

    我为 Android 应用程序制作了一个 QT 当我单击平板电脑中上面看到的按钮通知栏时 但是 如果单击通知 我的应用程序将打开 聚焦 不知道 并显示黑色窗口 简单来说怎么做呢 我的代码是 package org ays operation
  • Qt WinRT 应用程序无法访问文件权限被拒绝

    我需要使用 Qt 和 FFMPEG 开发 WinRT 应用程序 我根据指令构建了 WinRT 的 ffmpeghere https github com Microsoft FFmpegInterop我可以将库与我的项目链接起来 现在我需要
  • Qt - 如何粘合两个窗口并将它们移动在一起?

    就像qmmp Qt 音乐播放器ui设计一样 这两个或三个窗口实际上在同一个窗口中 因为只有一个dock图标 并且这些窗口可以一起移动并相互附着 我看了源码 好像有用QDockWidget 但我真的不知道如何获得它的细节 当您手动移动辅助窗口
  • 如何在带有预编译头的项目中使用google protobuf

    我有一个包含多个项目的解决方案 我的项目 但不是全部 使用预编译头 我决定使用 protobuf 但遇到了一个问题 在 protoc exe 从 proto 生成 pb h 后 我尝试包含标头并收到错误 预编译标头未包含在 pb h 中 我
  • 如何使用 Qtimer 添加 1 秒延迟

    我目前有一个方法如下 void SomeMethod int a Delay for one sec timer gt start 1000 After one sec SomeOtherFunction a 这个方法实际上是一个附加到信号
  • 向 Qt 样式表添加特异性时丢失样式

    这是我的代码 const QString STYLE SHEET background color rgba x x x y border 1px solid gray border radius 0px border top 1px so
  • Qt 文件对话框默认后缀不起作用

    我将以下代码用于 QtQuick Dialogs 1 3 和 Qt 5 10 0 下 filedialog 的新属性 我使用 Qt Creator 5 10 默认套件构建它 import QtQuick 2 10 import QtQuic
  • 如何创建用于 QML 的通用对象模型?

    我想知道是否有任何宏或方法如何将 Qt 模型注册为 QObject 的属性 例如 我有AnimalModel http doc qt io qt 5 qtquick modelviewsdata cppmodels html qabstra
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • 退出 Qt 程序的正确方法?

    我应该如何退出 Qt 程序 例如在加载数据文件时 发现文件损坏 并且用户需要退出该应用程序或重新启动数据文件 我是不是该 call exit EXIT FAILURE call QApplication quit call QCoreApp
  • QTimer 一点也不准确?

    运行在 Windows7 64 位机器上 具有非常强大的 CPU 8 核 16 线程 我使用 QTimer 以 50Hz 触发函数调用 但我最终得到了 30Hz 函数调用本身肯定需要不到 10 毫秒才能完成 整个过程发生在一个单独的线程中
  • Qt 插槽是否与其他代码并行运行?

    在此函数示例中 void MyClass myFunction emit MySignal1 emit MySignal2 如果我有slot1倾听MySignal1 and slot2倾听MySignal2 1 Is slot1总是会在之前
  • 将 gnuplot 嵌入现有 QtWidget 中

    我正在用 C 创建一个 伪 实时绘图应用程序 使用 gnuplot 作为绘图后端 我的要求之一是绘图必须位于现有窗口内 而不是有一个单独的绘图窗口 gnuplot 默认为 Gnuplot 有一个选项可以指定 Qt 小部件 ID 这似乎适合我
  • Qt:在多个布局中使用一个小部件

    我有一个 QTabBar 所有选项卡都应该有相同的小部件 layout1 gt addWidget w layout2 gt addWidget w 然而打电话addWidget第二次导致该小部件在第一个布局中消失 有没有办法使用一个小部件
  • Qt - 获取互联网上托管的网页的源代码(HTML 代码)

    我想获取网页的源代码 HTML 例如StackOverflow的主页 这是我到目前为止编写的代码 QNetworkAccessManager manager QNetworkReply response manager get QNetwo
  • 如何将 zlib 添加到现有的 qt 安装中

    如何将 zlib 添加到 Qt 的现有安装中 我对此很陌生 所以请给我详细的描述 提前感谢您的帮助 zlib 包含在 Qt 核心库中 如果你想在 Qt 程序中使用 zlib 函数 你只需要包含 src 3rdparty zlib 中的 zl
  • 如何向同一个 QMenu 添加多个 QAction?

    我正在尝试实现 Qt 菜单自定义 并且我提供了一个功能来添加相同的功能QAction在同一个人民币上下文菜单中多次 但是当我尝试这样做时 myMenu gt addAction myAction myMenu gt addAction my
  • Qt 安装程序框架 - 如何在卸载时仅删除某些文件和文件夹

    我使用 Qt 安装程序框架 如何确保在卸载时仅删除某些文件或文件夹 而不是像当前那样删除安装文件夹中的所有文件 先感谢您 您可以覆盖默认行为component createOperations对于卸载程序 然后使用手动指定每个卸载路径com
  • QWidget::showMinimized() 不起作用

    在 Ubuntu 13 04 上 如果使用QWidget showMinimized 为了最小化窗口 我发现通过单击系统任务栏上的应用程序图标恢复它后 调用QWidget showMinimized 无法工作 connect minimum

随机推荐

  • 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类及其子类都会使用