< 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] ==== 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