Qt Designer:无法更改字体大小

Posted

技术标签:

【中文标题】Qt Designer:无法更改字体大小【英文标题】:Qt Designer: Cannot change the font size 【发布时间】:2015-02-05 09:08:01 【问题描述】:

我在选项卡上有一些标签(即 tabWidget),当我更改字体大小时,它确实会更改,但是当我保存文件时,它们都会切换回其他东西(默认或其他)。 这里发生了什么?!

【问题讨论】:

【参考方案1】:

我认为您需要使用样式表设置字体。前段时间,我在找资料,通过阅读 Qt 文档并使用一些官方 Qt 示例找到了解决方案。

这里有一个例子。根据您自己的要求更改 css。

.pro 文件

HEADERS       = mainwindow.h 
FORMS         = mainwindow.ui 
RESOURCES     = stylesheet.qrc
SOURCES       = main.cpp \
                mainwindow.cpp \

stylesheet.qrc

<RCC>
<qresource prefix="/">
    <file>qss/cool.qss</file>
</qresource>
</RCC>

ma​​in.cpp

#include <QtWidgets>

#include "mainwindow.h"

int main(int argc, char *argv[])

    Q_INIT_RESOURCE(stylesheet);

    QApplication app(argc, argv);
    MainWindow window;
    window.show();
    return app.exec();

ma​​inwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtWidgets>

#include "ui_mainwindow.h"

class MainWindow : public QMainWindow

    Q_OBJECT

public:
    MainWindow();

    Ui::MainWindow ui;

private:
    void loadStyleSheet(const QString &sheetName);
;

#endif

ma​​inwindow.cpp

#include <QtWidgets>

#include "mainwindow.h"

MainWindow::MainWindow()

    ui.setupUi(this);
    loadStyleSheet("Cool");


void MainWindow::loadStyleSheet(const QString &sheetName)

    QFile file(":/qss/" + sheetName.toLower() + ".qss");
    file.open(QFile::ReadOnly);
    QString styleSheet = QString::fromLatin1(file.readAll());

    qApp->setStyleSheet(styleSheet);

最后,最重要的文件cool.qss:

QTabWidget::pane  /* The tab widget frame */
    border: 2px solid #C2C7CB;


QTabWidget::tab-bar 
    left: 5px; /* move to the right by 5px */


/* Style the tab using the tab sub-control. Note that
    it reads QTabBar _not_ QTabWidget */
QTabBar::tab 
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
                                stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);
    border: 2px solid #C4C4C3;
    border-bottom-color: #C2C7CB; /* same as the pane color */
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
    /* You should change min-width according to the
        lenght of your tab text */
    min-width: 14ex;
    padding: 4px;
    font: bold 14px;


QTabBar::tab:selected, QTabBar::tab:hover 
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                stop: 0 #fafafa, stop: 0.4 #f4f4f4,
                                stop: 0.5 #e7e7e7, stop: 1.0 #fafafa);


QTabBar::tab:selected 
    border-color: #9B9B9B;
    border-bottom-color: #C2C7CB; /* same as pane color */


QTabBar::tab:!selected 
    margin-top: 2px; /* make non-selected tabs look smaller */

在此文件中,您的代码比必要的多,但使用所有属性可能很重要。

无论如何,你需要根据你的要求更改以下行。

font: bold 14px;

检查 min-width 的值对于字体大小是否足够也很重要。

【讨论】:

以上是关于Qt Designer:无法更改字体大小的主要内容,如果未能解决你的问题,请参考以下文章

Qt 中如何获取系统默认字体大小?

无法更改 HTML 表单提交按钮的字体大小

为啥我的Excel的字体大小更改不了呢?

Qt 浅析QFontMetrics 获取字体宽度,高度

Qt 浅析QFontMetrics 获取字体宽度,高度

无法更改材质ui中文本字段的字体大小