[TOC]

QT之Qss

1、Qt 的一些心得]( https://blog.csdn.net/lpt19832003/article/details/5381095 )

圆角控件 用stylesheet方式

setStyleSheet ("border:2px groove gray;border-radius:10px;padding:2px 4px;");

2、QT去除控件被选中后的焦点虚线框

1.用qss,一句话搞定

在qss文件中加上下面这行代码(下面号外里有怎么新建qss文件并调用)

QWidget:focus{outline: none;} /remove all QWidget's focus border/ 1 只有一行,感觉很神奇,上面是对QWidget做的限制,如果你想对按钮或者输入框做限制,换成相应的QPushButton,QLineEdit即可.

或者用下面的这行也可以

QPushButton:focus{padding: -1;} // 具体负多少可以调节

3、Qt样式表之三:实现按钮三态效果的三种方法

ui->pbut_boardimg_reset->setStyleSheet("QPushButton{border-image: url(:/new/prefix1/image/showmodeimag/ok.png);}"
"QPushButton:hover{border-image: url(:/new/prefix1/image/showmodeimag/ok.png);}"
"QPushButton:pressed{border-image: url(:/new/prefix1/image/showmodeimag/ok1.png);}");

qss的使用

/*按钮普通态*/
QPushButton
{
    /*字体为微软雅黑*/
    font-family:Microsoft Yahei;
    /*字体大小为20点*/
    font-size:20pt;
    /*字体颜色为白色*/    
    color:white;
    /*背景颜色*/  
    background-color:rgb(14 , 150 , 254);
    /*边框圆角半径为8像素*/ 
    border-radius:8px;
}

/*按钮停留态*/
QPushButton:hover
{
    /*背景颜色*/  
    background-color:rgb(44 , 137 , 255);
}

/*按钮按下态*/
QPushButton:pressed
{
    /*背景颜色*/  
    background-color:rgb(14 , 135 , 228);
    /*左内边距为3像素,让按下时字向右移动3像素*/  
    padding-left:3px;
    /*上内边距为3像素,让按下时字向下移动3像素*/  
    padding-top:3px;
}
//这是在Qt的资源下的文件,可以不用在资源下
QFile file(":/qss/myStyleSheet.qss");
//只读方式打开文件
file.open(QFile::ReadOnly);
//读取文件的所有内容,并转换成QString类型
QString styleSheet = tr(file.readAll());
//当前窗口设置样式表
//this->setStyleSheet(styleSheet);
//指定按钮设置样式表
ui->pushButton->setStyleSheet(styleSheet);
ui->pushButton_2->setStyleSheet(styleSheet);

3、Qt为控件添加图片的几种方法

qt显示图片,可以添加到QLabel和QPushButton上。

//1、使用QIcon类,例
    QIcon icon1;
    icon1.addFile(tr("./icon.png");
    toolButton->setICon(icon1);

//2、使用QPixmap类与QBitmap类:
    QPixmap icon2(tr("./icon.png"));
    toolButton->setIcon(icon2);
    toolButton->setFixedSize(icon2.size());

    QPixmap icon3("./icon.png");  
    icon3 = icon3.scaled(label->width(),label->height());    //将图片缩放储存
    label->setPixmap(icon3);     //显示出缩放后的图片

//3、使用样式表,需要创建一个qrc文件到工程,再把文件添加到里面,
    toolButton->setStyleSheet(tr("background-image: url(:/icon/icon.png);“));

4、语言国际化

https://www.oschina.net/question/3193696_2232259?_t=t

5、去掉按钮上凹凸效果

ui->f_du_btn->setAutoFillBackground(true); ui->f_du_btn->setFlat(true);

6、去掉按钮菜单的下拉箭头

menuButton->setStyleSheet("QPushButton::menu-indicator{image:none}");

statusputton=new QPushButton();
statusmenu =new QMenu();
QAction *online=new QAction(statusmenu);
QAction *chatme=new QAction(statusmenu);

//设置
online->setIcon(icon:/img/online.png);
chatme->setIcon(icon:/img/chatme.png);

statusmenu->addAction(online);
statusmenu->addAction(chatme);

statusputton->setMenu(statusmenu);

7、菜单栏的菜单图标大小修改icon

挺麻烦的,重新定义icon样式。

fileMenu    = new QMenu(QObject::tr("File"),parent);
 4     newAction    = new QAction(QObject::tr("New"),parent);
 5     newAction->setIcon(QIcon("images/new.png"));//添加图标
 6     newAction->setShortcut(QKeySequence::New);//添加快捷键
 7     newAction->setStatusTip(tr("create a new file"));//添加任务栏提示

8、字体

https://blog.csdn.net/Carry_Qt/article/details/88866530


//    qApp->setFont(QFont("宋体",20,QFont::Bold));
    QFont font;
    //设置文字字体
    font.setFamily("宋体");
    //设置文字大小为50像素
    font.setPixelSize(50);
    //设置文字为粗体
    font.setBold(true);             //封装的setWeight函数
    //设置文字为斜体
    font.setItalic(true);           //封装的setStyle函数
    //设置文字大小
    font.setPointSize(20);
    //设置文字倾斜
    font.setStyle(QFont::StyleItalic);
    //设置文字粗细//enum Weight 存在5个值
    font.setWeight(QFont::Light);
    //设置文字上划线
    font.setOverline(true);
    //设置文字下划线
    font.setUnderline(true);
    //设置文字中划线
    font.setStrikeOut(true);

    //设置字间距%
    font.setLetterSpacing(QFont::PercentageSpacing,300);          //300%,100为默认
    //设置字间距像素值
    font.setLetterSpacing(QFont::AbsoluteSpacing,20);             //设置字间距为100像素
    //设置首个字母大写(跟参数有关,也可以设置全部大写AllUppercase)
    font.setCapitalization(QFont::Capitalize);


    //通过QFontMetrics获取字体的值
    QFontMetrics fm(font);
    qDebug() << fm.height();            //获取文字高度
    qDebug() << fm.maxWidth();          //获取文字宽度

    //通过QFontInfo获取也能获取字体信息

    QFontInfo fInfo(font);
    qDebug() << fInfo.family() <<"  "<<fInfo.style() << fInfo.pixelSize() << fInfo.overline();


    //设可以单独置QPlainTextEdit字体
    //ui->plainTextEdit->setFont(font);

    //将当前设置的字体设置为默认字体
    qApp->setFont(font);

字体对齐

Qt::Alignment alignment() const;    // 获取对齐方式  
void setAlignment(Qt::Alignment align);    // 设置对齐方式  

        这里的 Qt::Alignment 类型有以下取值。
        1)Qt::AlignLeft::水平方向靠左。

        2)Qt::AlignRight:水平方向靠右。

        3)Qt::AlignHCenter:水平方向居中。

        4)Qt::AlignJustify:水平方向调整间距两端对齐。

        5)Qt::AlignTop:垂直方向靠上。

        6)Qt::AlignButton:垂直方向靠下。

        7)Qt::AlignVCenter:垂直方向居中。

        8)Qt::AlignCenter:等价于 Qt::AlignHCenter | Qt::AlignVCenter。

9、qwebview禁用右键

selfServiceWebView->setContextMenuPolicy(Qt::NoContextMenu);

10、QLabel设置底色

画直线:其中有QPrinter.drawline

但是也可以使用QLabel,然后设置大小和背景颜色。

11、获取http状态码

https://cloud.tencent.com/developer/ask/178008

又是花了大半天没有解决问题,看见一份代码博客。Qt 之处理 QNetworkAccessManager 网络连接超时

QVariant httpStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
QVariant httpStatusMessage = reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute);

上面在reply->error()不等于200(不正常)时总是输出0和空值“”。然后在博客 https://blog.csdn.net/weixin_43866120/article/details/88016219 同道中人。

if (timer.isActive()) {  // 处理响应
    timer.stop();
    if (pReply->error() != QNetworkReply::NoError) {
        // 错误处理
        qDebug() << "Error String : " << pReply->errorString();
    } else {
        QVariant variant = pReply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
        int nStatusCode = variant.toInt();
        // 根据状态码做进一步数据处理
        //QByteArray bytes = pReply->readAll();
        qDebug() << "Status Code : " << nStatusCode;
    }
} else {  // 处理超时
    disconnect(pReply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
    pReply->abort();
    pReply->deleteLater();
    qDebug() << "Timeout";
}
————————————————
版权声明:本文为CSDN博主「一去丶二三里」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liang19890820/article/details/53204396

然后就发现上面这段代码,发现应该在200的情况下才能获取http状态码???

results matching ""

    No results matching ""