Russian Qt Forum
Декабря 17, 2025, 00:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
   Начало   Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
Страниц: 1 ... 7 8 [9] 10
 81 
 : Июля 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)

Суть такая, с начала обьявляется глобальная переменная, потом черег гетер и сетер мы работаем с получением и наполнением.
Надеюсь кому то тоже может помочь.

 82 
 : Июля 23, 2024, 14:20 
Автор Александра - Последний ответ от kambala
выше тебе все правильно написали. Тебе нужно передать autw в объект ld (например, как параметр конструктора), а не создавать внутри load новый объект Automat.

 83 
 : Июля 23, 2024, 13:49 
Автор Александра - Последний ответ от Александра
Потому что разные экземпляры Automat инициированы для разных переменных autw
Покажусь глупой, но они же и должны быть разными, или нет..?
По сути, да, они разные и друг друга не знают, потому что один в mainwindow находится, а второй - в load. Первый открывает (по сути) вторую вкладку, а второй должен заполнять текст.
А если они должны быть в виде единственного экземпляра, то как это указать в двух разных файлах? Не совсем понимаю, на то ли я вообще тогда опираюсь
 
залей пожалуйста код в виде zip или 7z архива, у меня нет возможности открыть rar. Про rar надо уже давно забыть и отправить на свалку истории.
Вот, с уже исправленными на unique_ptr: https://disk.yandex.ru/d/5BjKJRV7hcyaBw

 84 
 : Июля 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 вызывать не нужно.

 85 
 : Июля 23, 2024, 10:49 
Автор Александра - Последний ответ от kambala
Цитировать
вроде объект automatic_wind не удаляется в данный момент (по крайне мере, в бэбаггере он есть..)
наличие в дебаггере еще не показатель. В следующем случае объект a тоже будет отображаться в дебаггере, хотя и будет иметь кривое значение:
Код
C++ (Qt)
auto a = new A;
delete a;
std::cout << ''; // поставим тут точку останова

залей пожалуйста код в виде zip или 7z архива, у меня нет возможности открыть rar. Про rar надо уже давно забыть и отправить на свалку истории.

 86 
 : Июля 23, 2024, 10:10 
Автор Александра - Последний ответ от Александра
сигнал take_free_pallet случайно не из конструктора Automatic испускается? это бы объяснило почему слот не вызывается.
Не, он испускается не из конструктора - там вызывается метод отдельно, где уже и инспускается сигнал

ну или объект automatic_wind удаляется рано. Больше проблем вроде не видно.
Вот тут не уверена, что удаляется, вроде объект automatic_wind не удаляется в данный момент (по крайне мере, в бэбаггере он есть..).

Я пыталась разобраться сама с этим, сделала мини-приложение, которое плюс-минус напоминает механизм исходной программы (так как там уж слишком много всего...).
Вот оно: https://disk.yandex.ru/d/oUMQTPvJmbbJpw
Я обнаружила, что если у меня стоят коннекты в файле load, то сигнал и слот на работают, а если я его переставляю в auto, то все срабатывает без проблем. В чем тут может быть проблема? Я читала, что сигналы и слоты соединяются в определенных .h-файлах, но я ничего не смогла путного там разобрать...

П.С. В самом мини-приложении суть такова: есть первая страница, по нажатии на "3" я перехожу на вторую страницу, а на второй при нажатии на "1" или "2" должен появляться свой текст, вот в тексте проблема и оказалась - он просто не появляется. При перестановке коннекта все работает правильно.

 87 
 : Июля 21, 2024, 20:40 
Автор yuri_ch - Последний ответ от yuri_ch
наверное вызывался в момент загрузки файла. никогда не видел чтоб так писали Улыбающийся

Можно предположить, что сначала тупо выполнился код в скобках(как часть присвоения), а потом было само присвоение. Потому, что без операции присвоения криэйтор ругается и не хочет компилить.

 88 
 : Июля 21, 2024, 17:36 
Автор yuri_ch - Последний ответ от kambala
наверное вызывался в момент загрузки файла. никогда не видел чтоб так писали Улыбающийся

 89 
 : Июля 21, 2024, 17:04 
Автор yuri_ch - Последний ответ от yuri_ch
а какой момент является нужным?

есть Component.onCompleted например: https://doc.qt.io/qt-6/qml-qtqml-component.html#completed-signal

Блин, даже не подумал, что к неграфическому объекту тоже применимо.

Работает. Спасибо.

А почему в моем случае сработало? (скрипт в скобках) и почему до установки свойства?

 90 
 : Июля 21, 2024, 15:44 
Автор yuri_ch - Последний ответ от kambala
а какой момент является нужным?

есть Component.onCompleted например: https://doc.qt.io/qt-6/qml-qtqml-component.html#completed-signal

Страниц: 1 ... 7 8 [9] 10

Страница сгенерирована за 0.044 секунд. Запросов: 17.