Страниц: 1 ... 5 6 [ 7] 8 9 10
61
: Сентября 19, 2024, 11:21
|
Автор KSergeyP - Последний ответ от KSergeyP
|
Добрый день! Собираю Qt6.7.2 из исходников под Linux. Сборка проходит без ошибок но есть несколько предупреждений: Warning: private/qt3dquickvaluetypes_p.h:: QColor is declared as foreign type, but cannot be found. Warning: private/qt3dquickvaluetypes_p.h:: QMatrix4x4 is declared as foreign type, but cannot be found. Warning: private/qt3dquickvaluetypes_p.h:: QQuaternion is declared as foreign type, but cannot be found. Warning: private/qt3dquickvaluetypes_p.h:: QVector2D is declared as foreign type, but cannot be found. Warning: private/qt3dquickvaluetypes_p.h:: QVector3D is declared as foreign type, but cannot be found. Warning: private/qt3dquickvaluetypes_p.h:: QVector4D is declared as foreign type, but cannot be found. Warning: private/qpositioningquickmodule_p.h:: QGeoAddress is declared as foreign type, but cannot be found. Warning: private/qpositioningquickmodule_p.h:: QGeoLocation is declared as foreign type, but cannot be found. Warning: private/qpositioningquickmodule_p.h:: QGeoPositionInfo is declared as foreign type, but cannot be found. Warning: private/foreigntypes_p.h:: QTouch3DInputHandler is declared as foreign type, but cannot be found. Warning: private/foreigntypes_p.h:: Refusing to generate non-lowercase name TouchInputHandler3D for unknown foreign type qwltexturesharingextension_p.h:62:1: warning: Property declaration imageSearchPath has neither an associated QProperty<> member, nor a READ accessor function nor an associated MEMBER variable. The property will be invalid. QTextToSpeechMockPlugin.dir/QTextToSpeechMockPlugin_autogen/mocs_compilation.cpp.o [12338/13046] Automatic QML type registration for target WaylandCompositor Warning: qwaylandidleinhibitv1.h:: QWaylandCompositorExtensionTemplate<QWaylandIdleInhibitManagerV1> is used but cannot be found. Warning: qwaylandqttextinputmethodmanager.h:: QWaylandCompositorExtensionTemplate<QWaylandQtTextInputMethodManager> is used but cannot be found. Warning: qwaylandqtwindowmanager.h:: QWaylandCompositorExtensionTemplate<QWaylandQtWindowManager> is used but cannot be found. Warning: qwaylandtextinputmanager.h:: QWaylandCompositorExtensionTemplate<QWaylandTextInputManager> is used but cannot be found. Warning: qwaylandtextinputmanagerv3.h:: QWaylandCompositorExtensionTemplate<QWaylandTextInputManagerV3> is used but cannot be found.
Может кто то подсказать как от них избавиться, хотя бы от каких либо из перечисленных? Нужно доустановить какие-то dev пакеты в Linux? Понятно что для разных предупреждений какие-то свои зависимости должны быть.
|
62
: Июля 24, 2024, 11:32
|
Автор Александра - Последний ответ от kambala
|
Или его надо прописывать не так, как ниже, а именно в конструкторе класса load? его надо прописать и так, как ниже, а также указать его как параметр конструктора в классе load, иначе просто будет ошибка компиляции. C++ (Qt) load::load(Automat *autw, QObject *parent) : QObject(parent) { connect(autw, &Automat::get_load, this, &load::load_data); // альтернативно: вместо этого connect и emit get_data() просто писать autw->load_text() в месте испускания сигнала connect(this, &load::get_data, autw, &Automat::load_text); }
возможно тебе также понадобится сохранить autw в поле класса чтоб к нему был доступ вне конструктора load в общем, надо подучить С++ 
|
63
: Июля 24, 2024, 10:28
|
Автор Александра - Последний ответ от Александра
|
выше тебе все правильно написали. Тебе нужно передать autw в объект ld (например, как параметр конструктора), а не создавать внутри load новый объект Automat.
Ну, перенесу я таким способом autw, но у меня же load.cpp не будет знать, кто это такой. Объект ld создан и находится же в mainwindow, а коннекты же прописаны в файле load.cpp, то есть у них не будет прямой связи. Разве не так? П.с. Скорее всего, не так, но я не понимаю, как объявленный объект в конструкторе поможет объявить коннекты в другом файле. Или его надо прописывать не так, как ниже, а именно в конструкторе класса load? mainwindow.cpp... autw = std::make_unique<Automat>(); ld = std::make_unique<load>(autw); ...
|
64
: Июля 23, 2024, 20:21
|
Автор SektorCT - Последний ответ от SektorCT
|
решение найдено, если кому пригодится то привожу пример ниже. set_property(GLOBAL PROPERTY HEADERS_PROPERTY) # with props
function(add_headers_props) message(STATUS "Adding headers with property ${ARGV}") get_property(HEADERS GLOBAL PROPERTY HEADERS_PROPERTY) set_property(GLOBAL PROPERTY HEADERS_PROPERTY ${HEADERS} ${ARGV}) endfunction()
get_property(HEADERS_PROPERTY GLOBAL PROPERTY HEADERS_PROPERTY)
Суть такая, с начала обьявляется глобальная переменная, потом черег гетер и сетер мы работаем с получением и наполнением. Надеюсь кому то тоже может помочь.
|
65
: Июля 23, 2024, 14:20
|
Автор Александра - Последний ответ от kambala
|
выше тебе все правильно написали. Тебе нужно передать autw в объект ld (например, как параметр конструктора), а не создавать внутри load новый объект Automat.
|
66
: Июля 23, 2024, 13:49
|
Автор Александра - Последний ответ от Александра
|
Потому что разные экземпляры Automat инициированы для разных переменных autw Покажусь глупой, но они же и должны быть разными, или нет..? По сути, да, они разные и друг друга не знают, потому что один в mainwindow находится, а второй - в load. Первый открывает (по сути) вторую вкладку, а второй должен заполнять текст. А если они должны быть в виде единственного экземпляра, то как это указать в двух разных файлах? Не совсем понимаю, на то ли я вообще тогда опираюсь залей пожалуйста код в виде zip или 7z архива, у меня нет возможности открыть rar. Про rar надо уже давно забыть и отправить на свалку истории.
Вот, с уже исправленными на unique_ptr: https://disk.yandex.ru/d/5BjKJRV7hcyaBw
|
67
: Июля 23, 2024, 12:27
|
Автор Александра - Последний ответ от ssoft
|
Потому что разные экземпляры Automat инициированы для разных переменных autw C++ (Qt) MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); autw = new Automat(); connect(this,&MainWindow::open_window,autw,&Automat::open_automat); ld=new load(); }
C++ (Qt) load::load(QObject *parent) : QObject(parent) { autw = new Automat(); connect(autw,&Automat::get_load,this,&load::load_data); connect(this,&load::get_data,autw,&Automat::load_text); }
Из общих замечаний - нет очистки ресурсов (RAII). Всё что создано через new "повисает в воздухе". Никто не владеет экземплярами autw и ld. Хотя бы следует сделать delete для них, подобно как delete ui. А лучше использовать unique_ptr вместо простых указателей, в нем RAII реализовано внутри, тогда и delete вызывать не нужно.
|
68
: Июля 23, 2024, 10:49
|
Автор Александра - Последний ответ от kambala
|
вроде объект automatic_wind не удаляется в данный момент (по крайне мере, в бэбаггере он есть..) наличие в дебаггере еще не показатель. В следующем случае объект a тоже будет отображаться в дебаггере, хотя и будет иметь кривое значение: C++ (Qt) auto a = new A; delete a; std::cout << ''; // поставим тут точку останова
залей пожалуйста код в виде zip или 7z архива, у меня нет возможности открыть rar. Про rar надо уже давно забыть и отправить на свалку истории.
|
69
: Июля 23, 2024, 10:10
|
Автор Александра - Последний ответ от Александра
|
сигнал take_free_pallet случайно не из конструктора Automatic испускается? это бы объяснило почему слот не вызывается. Не, он испускается не из конструктора - там вызывается метод отдельно, где уже и инспускается сигнал ну или объект automatic_wind удаляется рано. Больше проблем вроде не видно.
Вот тут не уверена, что удаляется, вроде объект automatic_wind не удаляется в данный момент (по крайне мере, в бэбаггере он есть..). Я пыталась разобраться сама с этим, сделала мини-приложение, которое плюс-минус напоминает механизм исходной программы (так как там уж слишком много всего...). Вот оно: https://disk.yandex.ru/d/oUMQTPvJmbbJpwЯ обнаружила, что если у меня стоят коннекты в файле load, то сигнал и слот на работают, а если я его переставляю в auto, то все срабатывает без проблем. В чем тут может быть проблема? Я читала, что сигналы и слоты соединяются в определенных .h-файлах, но я ничего не смогла путного там разобрать... П.С. В самом мини-приложении суть такова: есть первая страница, по нажатии на "3" я перехожу на вторую страницу, а на второй при нажатии на "1" или "2" должен появляться свой текст, вот в тексте проблема и оказалась - он просто не появляется. При перестановке коннекта все работает правильно.
|
70
: Июля 21, 2024, 20:40
|
Автор yuri_ch - Последний ответ от yuri_ch
|
наверное вызывался в момент загрузки файла. никогда не видел чтоб так писали  Можно предположить, что сначала тупо выполнился код в скобках(как часть присвоения), а потом было само присвоение. Потому, что без операции присвоения криэйтор ругается и не хочет компилить.
|
Страниц: 1 ... 5 6 [ 7] 8 9 10 |