Qt 快速布局按钮在聚焦时不显示文本

问题描述 投票:0回答:1

当我使用 Qt 布局时,当应用程序窗口聚焦时,它不会显示按钮的文本。当我专注于不同的应用程序时,例如Qt Creator,按钮显示文本。我使用的是带有 Qt 6.5.2 的 Mac OS Ventura

import QtQuick
import QtQuick.Window
import QtQuick.Controls
import QtQuick.Layouts

Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Busy Indicator Control")

    RowLayout {
        width: parent.width
        height: parent.height
            Button {
                id: button1
                text: "Running"
                Layout.fillWidth: true
                onClicked: {
                    console.log("button pressed")
                }
            }
            Button {
                id: button2
                text: "Not Running"
                Layout.fillWidth: true
            }
        }
    }

我尝试使用较低版本的Qt,6.4.3,我还尝试创建一个具有相同代码和相同结果的新项目。

qt qml qtquick2 qt-quick
1个回答
0
投票

原因可能是 MacOS 上的系统偏好设置。

要解决此问题,只需将 palette 属性添加到按钮中

Button {
    id: button1

    Layout.fillWidth: true
    
    palette {
        buttonText: "maroon"
        button: "lavender"
    }
    
    text: "Running"
    onClicked: {
        console.log("button pressed");
    }
}

或者,您可以将

QQuickStyle::setStyle("Material");
添加到您的 main.cpp 文件中。

注意:在导入QQuickStyle

之前,您需要将行QT += quickcontrols2

添加到qmake文件(.pro)中
//main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickStyle>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQuickStyle::setStyle("Material");

    QQmlApplicationEngine engine;
    engine.load(QUrl("qrc:/main.qml"));

    return app.exec();
}

有关更多信息,您可以查看Qt Quick Controls 样式QQuickStyle 类Qt Quick Controls 配置文件

© www.soinside.com 2019 - 2024. All rights reserved.