QT-样式表

2023-11-12

Qt样式表是一个可以自定义部件外观的十分强大的机制﹐除了那些能够通过子类化QStyle更改的外观,其余的都可以使用Qt样式表来美化。Qt样式表的概念,术语和语法都受到了HTML的层叠样式表(Cascading Style Sheets, CSS)的启发,不过与CSS不同的是,Qt样式表应用于部件。

Qt样式表介绍

样式表可以使用QApplication: : setStyleSheet()函数将其设置到整个应用程序上,也可以使用QWidget::setStyleSheet()函数将其设置到一个指定的部件(还有它的子部件)上。如果在不同的级别都设置了样式表,那么Qt会使用所有有效的样式表,这被称为样式表的层叠。下面来看一个简单的例子。

使用代码设置样式表

新建Qt Widgets应用,项目名称为mystylesheets,类名为Main Window基类为QMainWindow保持不变。建立好项目后进入设计模式,向界面上拖人一个Push Button和一个 Horizontal Slider,然后在 mainwindow.cpp文件中的构造函数里添加如下代码:

  // 设置pushButton的背景为黄色
        ui->pushButton->setStyleSheet("background:yellow");
        // 设置horizontalSlider的背景为蓝色
       ui->horizontalSlider->setStyleSheet("background:blue");

这样便设置了两个部件的背景色,可以运行程序查看效果。在这里插入图片描述

不过像这样调用指定部件的 setStyleSheet()函数就只会对这个部件应用该样式表,如果想对所有的相同部件都使用相同的样式表,那么可以在它们的父部件上设置样式表。因为这里两个部件都在 MainWindow 上,所以可以为Main Window设置样式表。先注释掉上面的两行代码,然后添加如下代码:

setStyleSheet("QPushButton{background:yellow}QSlider{background:blue}");

这样,以后再往主窗口上添加的所有QPushButton部件和 QSlider部件的背景色都会改为这里指定的颜色。除了使用代码来设置样式表外,也可以在设计模式中为添加到界面上的部件设置样式表,这样更加直观。

在设计模式中设置样式表

先注释掉上面添加的代码,然后进入设计模式。在界面上右击,在弹出的级联菜单中选择“改变样式表”,这时会出现编辑样式表对话框,在其中输入如下代码:

在这里插入图片描述
注意,光标留在第一个大括号后。然后单击上面“添加颜色”选项后面的下拉箭头,则在弹出的列表中选择background-color项,如图所示。这时会弹出选择颜色对话框,可以随便选择一个颜色,然后单击OK按钮,则自动添加代码:在这里插入图片描述
在这里插入图片描述

根据选择颜色的不同, rgb()中参数的数值也会不同。可以看到,这里设置样式表不仅很便捷而且很直观,不仅可以设置颜色,还可以使用图片,使用渐变颜色或者更改字体。相似的,可以再设置QSlider的背景色,添加完成后如图所示。在设计模式有时无法正常显示设置好的样式表效果,不过运行程序后会正常显示的。这里是在MainWindow界面上设置了样式表,当然,也可以按照这种方法在指定的部件上添加样式表。

在这里插入图片描述
对于自定义样式,样式表要比调色板强大很多。例如,可以通过设置QPalette::Button角色为红色来获得一个红色的按钮,但是,这并不能保证在所有风格中都可以正常工作,因为它会受到不同平台的准则和本地主题引擎所限制。不过,样式表就不受这些限制,样式表可以执行所有的那些单独使用调色板很困难或者无法执行的自定义操作。样式表应用在当前的部件风格之上,这意味着应用程序的外观会尽可能本地化。此外,样式表可以用来给应用程序提供一个独特的外观,而不用去子类化QStyle,这样就可以很容易地实现大多数应用程序中拥有的换肤功能。

Qt样式表语法

Qt样式表的术语和语法规则与HTML CSS基本相同,下面从几个方面来进行讲解。本节内容可以在帮助中通过The Style Sheet Syntax关键字查看。

样式规则

样式表包含了一系列的样式规则,每个样式规则由选择器( selector)和声明( decla-ration)组成。选择器指定了受该规则影响的部件,声明指定了这个部件上要设置的属性。例如:

QPushButton{color:red}

在这个样式规则中,QPushButton是选择器,{ color: red}是声明,其中,color是属性, red是值。
这个规则指定了QPushButton和它的子类应该使用红色作为前景色。Qt样式表中一般不区分大小写,例如, color , Color,COLOR和COloR表示相同的属性。只有类名,对象名和Qt属性名是区分大小写的。一些选择器可以指定相同的声明,使用逗号隔开,例如:

QPushButton, QLineEdit,QComboBox{color :red}

样式规则的声明部分是一些“属性:值”对组成的列表,它们包含在大括号中,使用分号隔开。例如:

QPushButton(color:red; background-color:white)

可以在Qt Style Sheets Reference关键字对应文档中的List of Properties 一项中查看Qt样式表支持的所有属性。

选择器类型

Qt 样式表支持css2中的所有选择器。表中列出常用的选择器类型
在这里插入图片描述

子控件

对于一些复杂的部件修改样式,可能需要访问它们的子控件,比如 QComboBox的下拉按钮,还有QSpinBox的向上和向下箭头等。选择器可以包含子控件来对部件的.特定子控件应用规则,例如:

QComboxBox::drop-down{image:url(dropdown.png)}

这样的规则可以改变所有QComboBox部件的下拉按钮的样式。Qt Style SheetsReference关键字对应帮助文档的List of Stylable Widgets一项中列出了所有可以使用的样式表来自定义样式的Qt部件,List of SubControls一项中列出了所有可用的子控件。

伪状态

选择器可以包含伪状态来限制规则在部件的指定状态上应用。伪状态出现在选择器之后,用冒号隔离,例如:

QPushButton:hover{color:white}

这个规则表明当鼠标悬停在一个QPushButton部件上时才被应用。伪状态可以使用感叹号来表示否定,例如,要当鼠标没有悬停在一个QRadioButton上时才应用规则,那么这个规则可以写为:

QRadioButton:!hover{color:red}

伪状态还可以多个连用,达到逻辑与效果。例如,当鼠标悬停在一个被选中的QCheckBox部件上时才应用规则,那么这个规则可以写为:

QCheckBox: hover:checked{color:white}

如果有需要,也可以使用逗号来表示逻辑或操作,例如:

QCheckBox : hover,QCheckBox;checked{color :white)

当然,伪状态也可以和子控件联合使用:

QComboBox :: drop- down: hover { image;url(dropdown_bright.png)}

Qt Style Sheets Reference关键字对应帮助文档的List of Pseudo-States一项中列出了Qt支持的所有伪状态。

冲突解决

当几个样式规则对相同的属性指定了不同的值时就会产生冲突。例如:

QPushButton# okButton(color:gray}
QPushButton {color:red}

这样,okButton的color属性便产生了冲突。

解决这个冲突的原则是:

  1. 特殊的选择器优先。因为QPushButton# okButton一般代表一个单一的对象,而不是一个类所有的实例,所以它比QPushButton更特殊,那么这时便会使用第一个规则,okButton的文本颜色为灰色。

  2. 相似的,有伪状态比没有伪状态优先。如果两个选择符的特殊性相同,则后面出现的比前面的优先。Qt样式表使用CSS2规范来确定规则的特殊性。

层叠

样式表可以设置在QApplication上、父部件上或者子部件上。部件有效的样式表是通过部件祖先的样式表和QApplication上的样式表合并得到的。当发生冲突时,部件自己的样式表优先于任何继承的样式表,同样,父部件的样式表优先于祖先的样式表。

继承

当使用Qt样式表时,部件并不会自动从父部件继承字体和颜色设置。例如,一个QPushButton包含在一个QGroupBox中,这里对QGroupBox设置样式表:

qApp ->setStyleSheet("QGroupBox {color: red;}");

但没有对QPushButton设置样式表。这时,QPushButton会使用系统颜色,而不会继承QGroupBox的颜色。

如果想要QGroupBox的颜色设置到其子部件上,可以这样设置样式表:

aApp ->setStyleSheet( "QGroupBox,QGroupBox * { color: red;}");

设置QObject属性

从Qt 4.3开始,任何可设计的Q_PROPERTY都可以使用“qproperty-属性名称”语法来设置样式表。例如;

MyLabel{ qproperty- pixmap:url(pixmap. png);}
MyGroupBox{ qproperty- titleColor: rgb(100,200,100);}
QPushButton{ qaproperty- iconSize: 20px 20px;}

自定义与换肤

盒子模型

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

自定义部件外观

下面继续在上面程序中进行更改。首先向项目目录中添加4张图片,然后再向项目中添加一个Qt资源文件(添加新文件),名称为myresource。建立完成后,先添加前缀“/image”(右键-add prefix),然后将项目目录中的几个图片添加进来,最后按下Ctrl+S保存。
在这里插入图片描述

然后进入设计模式,再次打开主界面的编辑样式表对话框,先清空以前的代码,再添加如下代码:

/****************主界面背景**************/
QMainWindow{
}

在这里插入图片描述

这里可以将光标放到第一个大括号后,然后在“添加资源”的下拉列表中选择background-image,在弹出的选择资源对话框中选择一张背景图片(注意:第一次打开资源对话框时,可能无法显示资源,需要按下左上角的“重新加载”图标),这样便可以自动添加使用图片的代码。然后再更改QPushButton和QSlider的样式代码,最终的代码为:

/****************主界面背景**************/
QMainWindow{
/*背景图片*/
background- image: url(:/image/ beijing01. png);
/***按钮部件***/
background - color: rgba(100,225100,30);
/*边框样式*/
border-style:outset;
/*边框宽度为4像素*/
border-width:4px;
/*边框圆角半径*/
border-radius:10px;
/*边框颜色*/
border-color:rgba(255, 225255, 30);
/*字体*/
font:bold 14px;
/*字体颜色*/
color:rgba(0, 0, 0, 100);
/*填衬*/
padding: 6px;
}
/*鼠标悬停在按钮上时*/
QPushButton:hover{
background-color:rgba(100,255,100,100);
border-color:rgba(255, 225, 255200);
color:rgba(0, 0, 0, 200);
/*按钮被按下时*/
QPushButton:pressed {
background-color:rgba(100255,100200);
border-color:rgba(255, 22525530);
border-style:inset;
color:rgba(0, 0, 0, 100);
}
/************滑块部件*****************/
/*水平滑块的手柄*/
QSlider::handle:horizontal{
image:url(:/image/sliderHandle.png);
}
/*水平滑块手柄以前的部分*/
QSlider::sub-page:horizontal {
/*边框图片*/
border-image: url(:/image/slider.png);
}

下面回到设计模式,将界面上的pushButton部件大小更改为宽120、高40,将horizontalSlider部件的大小更改为宽280、高6。现在运行程序,拖动滑块手柄,然后按下按钮,效果如图所示。

在这里插入图片描述

在myresource.qrc文件上右击,在弹出的级联菜单中选择OpeninEditor,打开资源文件。然后选择添加前缀,再添加一个“/qss”"前缀(添加这个前缀只是为了将文件区分开),再选择添加文件,选择项目目录下新添加的my. qss和my1.qss文件。最后按下Ctrl+S保存修改。

这二个文件就是样式表的保存,用来换肤用的

//my.qss
/****************主界面背景*******************/
QMainWindow{
/*背景图片*/
background-image: url(:/image/beijing01.png);
}

/****************按钮部件*******************/
QPushButton{
/*背景色*/
background-color: rgba(100, 225, 100, 30);
/*边框样式*/
border-style: outset;
/*边框宽度为4像素*/
border-width: 4px;
/*边框圆角半径*/
border-radius: 10px;
/*边框颜色*/
border-color: rgba(255, 225, 255, 30);
/*字体*/
font: bold 14px;
/*字体颜色*/
color:rgba(0, 0, 0, 100);
/*填衬*/
padding: 6px;
}

/*鼠标悬停在按钮上时*/
QPushButton:hover{
background-color:rgba(100,255,100, 100);
border-color: rgba(255, 225, 255, 200);
color:rgba(0, 0, 0, 200);
}

/*按钮被按下时*/
QPushButton:pressed {
background-color:rgba(100,255,100, 200);
border-color: rgba(255, 225, 255, 30);
border-style: inset;
color:rgba(0, 0, 0, 100);
}

/****************滑块部件*******************/
/*水平滑块的手柄*/
QSlider::handle:horizontal {
image: url(:/image/sliderHandle.png);
}

/*水平滑块手柄以前的部分*/
QSlider::sub-page:horizontal {
/*边框图片*/
border-image: url(:/image/slider.png);
}

第二个

//my1.qss
/****************主界面背景*******************/
QMainWindow{
/*背景图片*/
background-image: url(:/image/beijing02.png);
}

/****************按钮部件*******************/
QPushButton{
/*背景色*/
background-color: rgba(100, 100, 100, 30);
/*边框样式*/
border-style: outset;
/*边框宽度为4像素*/
border-width: 4px;
/*边框圆角半径*/
border-radius: 10px;
/*边框颜色*/
border-color: rgba(255, 120, 120, 30);
/*字体*/
font: bold 14px;
/*字体颜色*/
color:rgba(0, 100, 0, 100);
/*填衬*/
padding: 6px;
}

/*鼠标悬停在按钮上时*/
QPushButton:hover{
background-color:rgba(200,255,100, 100);
border-color: rgba(255, 225, 255, 200);
color:rgba(0, 0, 0, 200);
}

/*按钮被按下时*/
QPushButton:pressed {
background-color:rgba(255,255,255, 200);
border-color: rgba(255, 225, 255, 30);
border-style: inset;
color:rgba(0, 0, 0, 100);
}

/****************滑块部件*******************/
/*水平滑块的手柄*/
QSlider::handle:horizontal {
image: url(:/image/sliderHandle.png);
}

/*水平滑块手柄以前的部分*/
QSlider::sub-page:horizontal {
/*边框图片*/
border-image: url(:/image/slider.png);
}

下面打开mainwindow.h添加前置声明

class QFile;

然后添加一个私有对象

QFile *qssFile;

转到mainWindow.cpp文件中添加头文件#include< QFile>,然后在构造函数中添加代码:

qssFile = new QFile(":/qss/my.qss", this);
    // 只读方式打开该文件
    qssFile->open(QFile::ReadOnly);
    // 读取文件全部内容,使用tr()函数将其转换为QString类型
    QString styleSheet = tr(qssFile->readAll());
    // 为QApplication设置样式表
    qApp->setStyleSheet(styleSheet);
    qssFile->close();

这里读取了Qt样式表文件中的内容,然后为应用程序设置了样式表。下面再进入设计模式,将pushButton的文本更改为“换肤”,然后转到它的单击信号对应的槽中,更改如下:

void MainWindow::on_pushButton_clicked()
{
    if(qssFile->fileName() == ":/qss/my.qss")
        qssFile->setFileName(":/qss/my1.qss");
    else qssFile->setFileName(":/qss/my.qss");
    qssFile->open(QFile::ReadOnly);
    QString styleSheet = tr(qssFile->readAll());
    qApp->setStyleSheet(styleSheet);
    qssFile->close();
}

现在运行程序,按下按钮后便会更改界面的外观,这样就实现了换肤功能。

这个程序是将. qss文件放到了资源文件中,其实它也可以放在程序外,可以使用任意的文本编辑器进行编写,只要最后以. qss为后缀保存即可。

如果放在了程序外,那么就要更改程序中的文件路径,还要注意更改样式表中使用的图片路径。

样式表的内容就讲到这里,可以在帮助中通过Qt Style Sheets关键字来查看更多相关内容的学习。Qt Style Sheets Examples关键字对应的文档中列举了很多常用部件的一些样式表应用范例,可以作为参考。

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

QT-样式表 的相关文章

  • QToolBar 的菜单延迟

    我通过制作 QAction 并向其添加 QMenu 在 QToolBar 上有一个菜单 如何消除单击图标时出现菜单之前的延迟 QToolBar myToolBar new QToolBar this QAction myAction new
  • 调整 QML 图像显示尺寸

    我有一个带有嵌套的 QML 窗口RowLayout 在内排我有两个图像 来源 png这些图像的文件 故意 相当大 当我尝试设置height这些图像上的属性使它们变小 但它们仍然被画得很大 Desired Appearance Actual
  • 如何将图标放置到 QLineEdit 上?

    stackoverflow com 网站的右上角有一个带有放大镜头的搜索字段和一个灰色的 搜索 关键字 我想知道是否有可能实现相同的外观QLineEdit 如果是这样那怎么办 QLineEdit lineEdit new QLineEdit
  • Qt 支持在 QIcon 中为 SVG 着色

    看来 Qt 不支持 SVG 中路径标签上的描边 填充选项
  • 从 QML 实例化 C++ 对象会产生巨大的内存使用开销

    实例化一个QObjectC 堆中的派生类为每个对象提供了大约 160 个字节 通过注册相同的对象qmlRegisterType 用于从 QML 创建并通过以下方式动态创建对象createObject 每个对象给我 2000 多个字节 这是完
  • 如何在 Qt-Embedded 中(正确)输出多语言文本?

    我的目标系统是 linux 3 3 7 Qt Embedded 开源版 4 8 Droid 字体 取自 fonts droid 20111207 git 1 all deb Debian 软件包并复制到 usr lib fonts目录 主要
  • Qt/c++ 随机字符串生成[重复]

    这个问题在这里已经有答案了 我正在创建一个应用程序 需要生成多个随机字符串 几乎就像一个由一定长度的 ASCII 字符组成的唯一 ID 这些字符混合有大写 小写 数字字符 有没有 Qt 库可以实现这一点 如果没有 在纯 C 中生成多个随机字
  • 有没有办法在没有 QApplication::exec() 的情况下使用 Qt?

    有没有一种安全的方法可以在不调用 QApplication exec 的情况下使用 Qt 我有许多不同的对象正在对多个资源执行长期进程 至少其中一个正在与 Web 应用程序服务器进行通信 我正在制作一个 GUI 应用程序 提示用户在正确的时
  • QDesktopServices::openUrl 在资源管理器中选择指定文件

    在大多数编码程序中 您可以右键单击该项目 然后单击 在资源管理器中显示 它会在资源管理器中显示选定项目的文件 在 Qt 中使用 QDesktopServices 如何做到这一点 或在 QT 中执行此操作的任何方式 您可以使用此方法在 Win
  • Qt中如何获取鼠标在屏幕上的位置?

    我想获取屏幕上的鼠标坐标 我怎样才能在 Qt 中做到这一点 在 Windows 上 使用 C 我正在做类似答案中建议的事情对于这个问题 https stackoverflow com q 11737665 1420197 正如文档所述 QC
  • 如何使用 Qtimer 添加 1 秒延迟

    我目前有一个方法如下 void SomeMethod int a Delay for one sec timer gt start 1000 After one sec SomeOtherFunction a 这个方法实际上是一个附加到信号
  • 重定向 python 交互式帮助()

    我正在为使用 Qt 的应用程序开发交互式 python shell 但是我似乎无法获得重定向的交互式帮助 我的 python 代码中有这个 class OutputCatcher def init self self data def wr
  • 如何在 Qt 中以编程方式制作一条水平线

    我想弄清楚如何在 Qt 中制作一条水平线 这很容易在设计器中创建 但我想以编程方式创建一个 我已经做了一些谷歌搜索并查看了 ui 文件中的 xml 但无法弄清楚任何内容 ui 文件中的 xml 如下所示
  • 如何在 QTabWidget Qt 中展开选项卡

    我有一个QTabWidget像这个 但我想展开选项卡以 填充 整个小部件宽度 如下所示 我怎样才能做到这一点 我在用Qt 5 3 2 and Qt 创建者 3 2 1 Update 我尝试使用setExpanding功能 ui gt myT
  • 退出 Qt 程序的正确方法?

    我应该如何退出 Qt 程序 例如在加载数据文件时 发现文件损坏 并且用户需要退出该应用程序或重新启动数据文件 我是不是该 call exit EXIT FAILURE call QApplication quit call QCoreApp
  • Qt 布局,在小部件大小更改后调整到最小大小

    基本上我有一个QGridLayout里面有一些小部件 最重要的是 2 个标签 我用它们将图像绘制到屏幕上 好吧 如果用户愿意 他可以更改传入图像的分辨率 从而强制标签调整大小 我们假设标签的初始大小是320x240 用户将 VideoMod
  • 在 MacOS 终端上运行 ffmpeg [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我对 MacOS 相当陌生 我发现使用终端来获取信息并不容易ffmpeg和我在 Window 上一样正常运行 我有 ffmpeg 二进制文件ffmpe
  • PyQt5:如何使QThread返回数据到主线程

    I am a PyQt 5 4 1 1初学者 我的Python是3 4 3 这是我尝试遵循的many https mayaposch wordpress com 2011 11 01 how to really truly use qthr
  • 将 gnuplot 嵌入现有 QtWidget 中

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

    我有一个 QTabBar 所有选项卡都应该有相同的小部件 layout1 gt addWidget w layout2 gt addWidget w 然而打电话addWidget第二次导致该小部件在第一个布局中消失 有没有办法使用一个小部件

随机推荐

  • java基础

    Java基础 Java基础特性 与cmd的交互 1 1 什么是cmd 就是在windows操作系统中 利用命令行的方式去操作计算机 我们可以利用cmd命令去操作计算机 比如 打开文件 打开文件夹 创建文件夹等 1 2 如何打开CMD窗口 按
  • 【路由篇】01. 电脑远程访问小米路由器硬盘文件

    简介 自带硬盘的小米路由器可以保存照片 视频等文件 通过手机的小米路由器APP可以远程查看 非常方便 但是美中不足的是电脑无法远程访问小米路由器的文件 这就让小米路由器硬盘的功能大打折扣了 如果电脑可以远程访问小米路由器硬盘的话 当我们在外
  • 遍历一个HashMap

    可以通过2种方法遍历HashMap Map map new HashMap for Iterator iter map entrySet iterator iter hasNext Map Entry entry Map Entry ite
  • Centos 6.5、7升级安装openssh8.2p1

    因centos7自带的ssh版本较低 存在高危漏洞 故升级到最新版本 目前是8 2p1 注意 升级ssh存在一定的危险性 一旦不成功可能无法通过远程连接到系统 因此在升级之前最好先安装vnc或者telnet等远程服务 1 准备工作 查看下当
  • Qt开发 入门

    1 Qt概述 什么是Qt 不论我们学习什么样的知识点首先第一步都需要搞明白它是什么 这样才能明确当前学习的方向是否正确 下面给大家介绍一下什么是Qt Qt是一个跨平台的C 应用程序开发框架 具有短平快的优秀特质 投资少 周期短 见效快 效益
  • 等待一秒lua

    等待1秒 threadpool wait 1 等待1秒 threadpool wait 1 lua 等待1秒 threadpool wait 1
  • 嵌入式学习之STM32实现OLED

    嵌入式学习之STM32实现OLED 一 实验要求 二 SPI介绍 三 OLED介绍 四 实验过程 1 代码编写 实验结果演示 一 实验要求 理解OLED屏显和汉字点阵编码原理 使用STM32F103的SPI或IIC接口实现以下功能 显示自己
  • VS2019之WebAPI的创建与调用方法

    一 使用VS2019创建WebAPI 使用ValuesController cs来编写WebAPI的方法 重要 WebApiConfig cs的配置代码 注意访问方式 WebApi在访问时在主机名后加 api 然后再加控件器 方法 参数 如
  • R、Rstudio和Rtools的安装(以4.3.0版本为例)

    1 R的安装 下载地址 The Comprehensive R Archive Network tsinghua edu cn 这里下载的是4 3 0版本 选择Windows版本 下载后选择路径进行安装 默认选项即可 2 Rtools的安装
  • LabVIEW2018安装与使用

    安装 https blog csdn net m0 38106923 article details 88654150 每一个labview程序叫做一个vi 文件 新建vi 前面板 放一些控件 eg 输入控件 输出控件 显示控件 右键 选择
  • HttpMessageNotReadableException: JSON parse error: Unexpected character (‘“‘ (code 34)): was expecti

    作者 我弟 接口请求报错 2022 07 16 16 41 01 579 WARN 18820 nio 9002 exec 3 w s m s DefaultHandlerExceptionResolver Resolved org spr
  • Redis数据库安装

    1 redis安装包下载 redis安装包下载地址 https github com MicrosoftArchive redis releases windows下载msi安装包即可 2 安装redis 下载完成后 点击进行安装 按默认配
  • IT项目管理 — 作业7

    题目 Tony Prince 和他的团队正在做一个娱乐和健康方面的项目 他们被要求修改现有的成本估计 以便能有一个可靠的评价项目绩效的基线 进度和成本目标是在 6 个月内在 200 000 美元的预算下完成项目 准备和打印一页类似于图 7
  • 有什么好用的Angular插件推荐吗?

    10 个最受欢迎的 Angular 库 一 Angular Material Angular Material 是由 Google 开发的一款工具 是适合与 Angular 框架一起使用的 UI UX 组件库 Angular Materia
  • 实现DNS主从复制、子域、转发、智能DNS

    主从复制 前提准备 关闭SElinux 关闭防火墙 时间同步 环境说明 Centos7 ip地址 dns master 10 0 0 100 dns slave 10 0 0 103 web 10 0 0 101 目的 搭建DNS主从服务器
  • 计算机原理-结构组成

    cpu 中央处理器 程序控制 操作控制 时间控制 数据处理 运算器 算数逻辑单元ALU 逻辑运行 累加计算器AC 为alu提供工作区 数据缓存寄存器 DR 暂存指令和数据 状态条件寄存器PSW 保存指令条件码 控制器 程序计数器PC 指令计
  • python华为OD机试-进制转换-(5)

    题目5 题目描述 写出一个程序 接受一个十六进制的数 输出该数值的十进制表示 输入描述 输入一个十六进制的数值字符串 注意 一个用例会同时有多组输入数据 请参考帖子https www nowcoder com discuss 276处理多组
  • Matlab中的画图函数

    目录 一 二维曲线和图形 1 二维图像基本命令plot 1 曲线线型 颜色和标记点类型 2 设置曲线线宽 标记点大小 标记点边框颜色和标记点填充颜色等 3 坐标轴设置 4 坐标轴刻度设置 5 图例 6 更多的设置 二 图形的控制与表现 1
  • spring-MVC__spring__hibernate整合值hibernate的配置文件 (hibernate.cfg.xml)

  • QT-样式表

    Qt样式表是一个可以自定义部件外观的十分强大的机制 除了那些能够通过子类化QStyle更改的外观 其余的都可以使用Qt样式表来美化 Qt样式表的概念 术语和语法都受到了HTML的层叠样式表 Cascading Style Sheets CS