如何更改qml中此标题栏的背景和图标?
答案 0 :(得分:-1)
你的qml应用程序是如何启动的?如果你通过qmlscene运行它,你就无能为力。
但如果您通过子类QQuickView构建自己的应用程序,那么您可以使用全套API(http://doc.qt.io/qt-5/qquickview-members.html):
Table B
答案 1 :(得分:-1)
这取决于GUI的完成程度。
关于图标,设置它的最简单且最一致的方法是通过QGuiApplication::windowIcon。这将为应用程序的所有窗口和对话框设置图标:
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
app.setWindowIcon(QIcon(":/MyAppIcon.png"));
QQmlApplicationEngine engine;
engine.load(QUrl("qrc:/main.qml"));
// ...
对于窗口标题,如果您使用Window或ApplicationWindow,那么请查看Window::title属性,例如:
import QtQuick 2.0
import QtQuick.Controls 2.2
ApplicationWindow {
width: 800
height: 600
title: qsTr("Hello World")
}
<强>更新强> 如果您需要更多自定义,例如更改标题栏的背景颜色,则必须使用平台本机方法来执行此操作。我想这是由于这些事情是高度特定于平台的,甚至可能在某些系统上无法实现,因此Qt不会为此类任务提供任何API。
您可以尝试使用QWindow::winId获取QQuickWindow(QWindow)的平台窗口句柄,并使用例如Windows API做一些自定义绘图。 Here是一个类似的帖子,您可以查看以开始使用。
但是,请记住,这样做意味着您必须在项目中引入特定于平台的代码,因此如果Windows不是您应用程序的唯一目标,请更好地将其包装起来。
另一种方法是在没有系统标题栏的情况下请求完全创建窗口。您可以完全使用QML绘制自定义标题栏。但是,这意味着您必须“重新创建”Windows窗口标题栏,并且 - 如果这是一项要求 - 也对您想要运行应用程序的其他操作系统执行相同操作(或者使用应用程序看起来像“外星人”这样的事实“在非Windows上)。但是,对于喜欢对所有应用程序具有一致外观的用户而言,这可能会被视为不良。