一、QT的样式设
我们平时在使用QT来设计界面的时候,如果不做任何处理会觉得界面非常的不美观,或者不符合审美逻辑,这个时候就需要一定的样式设置了,而QT专门提供了自己的一套QSS样式设置。但是这篇文章探讨的主要是一些平时可能会用到但是网上资料比较少的偏逻辑样式设置,网上资料很多的那种样式就不多说了。
1、QPlainTextEdit和QTextEdit的行高设置
QTextBlockFormat blockFormat;
blockFormat.setLineHeight(24, QTextBlockFormat::FixedHeight);
QTextCursor textCursor = ui->plainTextEdit->textCursor();
textCursor.setBlockFormat(blockFormat);
ui->plainTextEdit->setTextCursor(textCursor);
但是很有可能设置不起效果,因为只有是确定一行一行写入QPlainTextEdit的才可以,如果类似传入QString然后写入的就有可能设置不成功,而QTextEdit个人建议通过sethtml函数来设置行高。
2、win10系统下QTableView或者QTableWidget表头与第0行之间的分割线消失,网上说这有可能在win10电脑上存在,不管怎样,样式设置上去就可以解决了。
if (QSysInfo::windowsVersion() == QSysInfo::WV_WINDOWS10)
{
m_pTableView->setStyleSheet(
"QHeaderView::section{"
"border-top:0px solid #D8D8D8;"
"border-left:0px solid #D8D8D8;"
"border-right:1px solid #D8D8D8;"
"border-bottom: 1px solid #D8D8D8;"
"background-color:white;"
"padding:4px;"
"}"
"QTableCornerButton::section{"
"border-top:0px solid #D8D8D8;"
"border-left:0px solid #D8D8D8;"
"border-right:1px solid #D8D8D8;"
"border-bottom: 1px solid #D8D8D8;"
"background-color:white;"
"}");
}
当然这里的判断可要可不要。
3、QScrollArea增加新的内容时,滚动条滚动显示新内容部分
当然有setValue方法可以使用,但是会导致一个问题,以往QScrollArea中添加QWidget为例,想让他滚动到最底部时,总是最多显示倒数第二个,原因暂时没有找到,但是使用槽函数可以解决这个问题。
connect(ui->scrollArea->verticalScrollBar(), SIGNAL(rangeChanged(int, int)), this, SLOT(slotSlider(int, int)));
如果只有增加内容的时候想显示到最新内容,减少则不作改变则可以用一个bool类型的判断值
4、QT样式设置不上的原因:QT设置样式可以有好多种方法,一是直接在ui控件中设置样式,二是使用动态属性,三还可以用代码setStyleSheet设置样式,有可能会被覆盖。还有可能是qss样式本身就写错了,还有可能是被父类的样式所覆盖,因为QT有样式设置规则
(1)通用选择器
格式 :* { 属性: 值; }
通用选择器用( * )来表示, 它表示匹配程序中所有的 widget.
例如:*{font: normal 20px “微软雅黑”;}
这条语句表示将程序中所有 widget 的字体大小都设置为 20px 大小, 字体采用微软雅黑.
(2)类型选择器
格式: 类名 { 属性: 值; }
类名即 Widget 类名, 由 QObject :: metaObject() :: className()获取, 类型选择器匹
配所有该类以及该类的派生类的对象.例如:
QPushButton{ color: blue; }
这条语句表示, 程序中所有的 QPushButton 类和它的派生类的对象, 它们的前景色(文字
颜色)被设置为蓝色.
(3)类选择器
格式:.类名 { 属性: 值; }
这里的类名与类型选择器中的类名一样, 不同的是, 类选择器的类名前面有一个( . ), 这种
选择器只会匹配该类的所有对象, 而不会匹配其派生类的对象.例如:
.QPushButton{ color: blue; }
(4)ID 选择器
格式:#id{ 属性: 值; }
这里的 id 指的是 objectName, 每个 QObject 类及其派生类都有的一个属性, “#” + objectName
构成了我们的 ID 选择器, 它匹配所有 objectName 为 ID 选择器所指定的名称的对象, 为其设
置样式. 例如:
#button_1{ color: red; }
其他的样式应该都不是很稀奇的,网上资料比较齐全,后面有遇到的在进行记录。