QT6 iOS QML QOIOSApplicationDelegate начинает делегировать, но main.qml не виден (экран черный)IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 QT6 iOS QML QOIOSApplicationDelegate начинает делегировать, но main.qml не виден (экран черный)

Сообщение Anonymous »

Я провел много часов, пытаясь получить простое приложение QML iOS, чтобы запустить делегат UIApplication, а также запустить и отобразить компонент main.qml для более крупного приложения, которое я хотел бы создать. < /p>
< P> IM Использование QT 6.8.1 на Macos Sonoma 14.6.1, QT Creator 15.0.0
IV /> Проблема в том, что все работает, за исключением того, что main.qml не показывает.
Экран просто черный. Я могу закрыть приложение и открыть его, а делегаты UIApplication
называют, как ожидалось, но экран всегда черный. Я пробовал несколько других решений
, ни один из которых я не смог получить, чтобы работать правильно. Работа
, как и ожидалось, за исключением визуального дисплея. < /p>
Любая помощь и /или предложения оценены.
Спасибо! < /p>
Main.qml: < /p>

Код: Выделить всё

import QtQuick
import QtQuick.Window
import QtQuick.Controls

ApplicationWindow {
width: 640
height: 480
visible: true
color: "green"

Component.onCompleted: {
console.log("Main.qml Completed")
}

onVisibleChanged: console.log("Main.qml: visible: " + visible)

Text {
text: "My Application"
color: "white"
anchors.centerIn: parent
font.pixelSize: 26
}
}
< /code>
Appdelegate.h:
#import 

@interface QIOSApplicationDelegate : UIResponder 
@property (strong, nonatomic) UIWindow *window;
@end
< /code>
Aappdelegate.mm
// AppDelegate.mm
#import "AppDelegate.h"

extern void setContinueLaunchingQML();

@implementation QIOSApplicationDelegate

- (void)applicationDidFinishLaunching:(UIApplication *)application {
NSLog(@"------------ App applicationDidFinishLaunching");
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"==== didFinishLaunchingWithOptions");

setContinueLaunchingQML();

NSLog(@"==== applicationDidFinishLaunching return YES ====");
return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"IOS_APP_DEL: applicationWillResignActive");
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"IOS_APP_DEL: applicationDidEnterBackground");
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"IOS_APP_DEL: applicationWillEnterForeground");
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"IOS_APP_DEL: applicationDidBecomeActive");
}
- (void)applicationWillTerminate:(UIApplication *)application {
}
@end
< /code>
main.cpp:
// main.cpp
#include 
#include 
#include 
#include 

static bool waiting_for_ios_delegate_ = true;

int main(int argc, char *argv[])
{
qDebug() processEvents();
}

qDebug() 
[code]// AppDelegate.h
#import 

@interface QIOSApplicationDelegate
@end

@interface QIOSApplicationDelegate (MyIOSApplicationDelegate)
@property (strong, nonatomic) UIWindow *window;
@end
Я также полностью удалил флаг подопечного >2025-01-28 05:24:04.223 appiosDelegate[81506:24556235] ==== didFinishLaunchingWithOptions
2025-01-28 05:24:04.223 appiosDelegate[81506:24556235] ==== applicationDidFinishLaunching return YES ====
MAIN CPP start
Component Main.qml READY...now create it
qml: Main.qml: visible: true
qml: Main.qml Completed
exec()
stale focus object 0x0 , doing manual update
< /code>
В моих первых примерах были вызваны другие делегаты, когда я смоделировал
экран «Домашний», а также перезапустил приложение. После двух моих изменений я только получу только 1 делегат, другие не называются. p>
extern "C" int qt_main_wrapper(int argc, char **argv[]);
< /code>
и реализация точки входа в iOS _qt_main_wrapper: < /p>
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}
-Wl,-e,_qt_main_wrapper
-u _qt_registerPlatformPlugin
-framework Foundation
-framework UIKit")
< /code>
Однако также кажется, что если я не включаю -wl, -e, _qt_main_wrapper
я получаю тот же результат в свой вывод: < /p>
2025-01-28 07:25:02.170 appiosDelegate[93577:24696424] ==== didFinishLaunchingWithOptions
2025-01-28 07:25:02.170 appiosDelegate[93577:24696424] ==== applicationDidFinishLaunching return YES ====
MAIN CPP start
Continue main cpp Startup...
Component Main.qml READY...now create it
qml: Main.qml: visible: true
qml: Main.qml Completed
exec()
stale focus object 0x0 , doing manual update
< /code>
Другие статьи: < /p>
qt xcode ios point < /p>
qt ios ios incler точка входа (_main) Undefined < /p>
Разрешить динамические сборки QT для iOS - Tech Preview < /p>
Как получить didfinishlaungingwithoptions, вызванные в делегате iOS? < /p>
Я не смог найти документ QT, описывающий, как выполнить это, кроме ссылки на отчет об ошибках, которую я предоставил. >export QT_LOGGING_RULES="lcEventDispatcher.debug=true"
< /code>
Когда я попробовал -wl, -e, _qt_main_wrapper Flag, чтобы увидеть, называется ли qt_main_wrapper, я не
не видел никаких выводов для этого события (это должно быть из qioseventdispatcher. мм). Я понятия не имею, почему этот флаг линкера
не будет работать, так как я вижу его на выходе компилятора, и
Я добавил: < /p>
extern "C" int qt_main_wrapper(int argc, char *argv[])
< /code>
main.cpp
Когда я попробовал. Любая помощь ценится.

Подробнее здесь: https://stackoverflow.com/questions/793 ... visible-sc
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»