当我使用 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,我还尝试创建一个具有相同代码和相同结果的新项目。
原因可能是 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 配置文件。