Size: a a a

2021 January 13

S

Sofia in Qt
mefest
сложно так сказать, но мне кажется, что тебе надо делать присваивание после того как пользователь что то введет
получается вот эта запись text: fdStream.fileUrls[0] не комильфо
источник

A

Alexander in Qt
Anatoly Tomilov
надо сначала понять, что это не C++
Qt - это обёртка поверх плюсов. То, что умеет просто с++, кутэ не отменяет - просто предлагает дополнительные удобства поверх. Прошу простить за занудство )
источник

S

Sofia in Qt
тогда я её убираю, и добавляю присваивание в filedialog
источник

AT

Anatoly Tomilov in Qt
TextField { Component.onCompleted: filedialog.fileUrls[0] = "" ; onTextChanged: filedialog.fileUrls[0] = text; }
источник

m

mefest in Qt
Sofia
тогда я её убираю, и добавляю присваивание в filedialog
вроде так. когда уже произошел выбор в fileDialog присваивай значение
источник

AT

Anatoly Tomilov in Qt
Alexander
Qt - это обёртка поверх плюсов. То, что умеет просто с++, кутэ не отменяет - просто предлагает дополнительные удобства поверх. Прошу простить за занудство )
вам стоит перечитать исходный вопрос и распарсить процитированный в нём код и понять — это C++ или не-C++
источник

W

WhoAmI? in Qt
Anatoly Shirokov
прочитать, вызывать setLayout
Вызвал:

QTableWidgetItem *test = new QTableWidgetItem(listA.at(x));
               QWidget *checkBoxWidget = new QWidget();
               QCheckBox *checkBox = new QCheckBox();    
               QHBoxLayout *layoutCheckBox = new QHBoxLayout(checkBoxWidget); // создаём слой с привязкой к виджету
               layoutCheckBox->addWidget(checkBox);            // Устанавливаем чекбокс в слой

               layoutCheckBox->setAlignment(Qt::AlignCenter);
               layoutCheckBox->setContentsMargins(0,0,0,0);    
               checkBoxWidget->setLayout(layoutCheckBox);
               ui->tableWidget->setCellWidget(row, 0, checkBoxWidget);
               ui->tableWidget->setItem(row, x+1, test);
источник

S

Sofia in Qt
Anatoly Tomilov
TextField { Component.onCompleted: filedialog.fileUrls[0] = "" ; onTextChanged: filedialog.fileUrls[0] = text; }
Спасибо
источник

W

WhoAmI? in Qt
@anatolijs как установка лэйаута может влиять на чекбокс?..
источник

AS

Anatoly Shirokov in Qt
WhoAmI?
@anatolijs как установка лэйаута может влиять на чекбокс?..
wigdet->setLayout
источник

AS

Anatoly Shirokov in Qt
сорри, не имею времени разбираться, ушел
источник

m

mefest in Qt
WhoAmI?
Вызвал:

QTableWidgetItem *test = new QTableWidgetItem(listA.at(x));
               QWidget *checkBoxWidget = new QWidget();
               QCheckBox *checkBox = new QCheckBox();    
               QHBoxLayout *layoutCheckBox = new QHBoxLayout(checkBoxWidget); // создаём слой с привязкой к виджету
               layoutCheckBox->addWidget(checkBox);            // Устанавливаем чекбокс в слой

               layoutCheckBox->setAlignment(Qt::AlignCenter);
               layoutCheckBox->setContentsMargins(0,0,0,0);    
               checkBoxWidget->setLayout(layoutCheckBox);
               ui->tableWidget->setCellWidget(row, 0, checkBoxWidget);
               ui->tableWidget->setItem(row, x+1, test);
может у тебя у этой ячейки нет item?
источник

IZ

Ilia Zviagin in Qt
WhoAmI?
Друзья, помогите, пожалуйста...
Ниже жирным написал строку, из-за которой вылетает приложение
В первый TableWidget считывают данные из csv-файла (все работает правильно):
(см. слот по нажатию на 1-ю кнопку)
Во второй TableWidget хочу скопировать те строки и столбцы, которые выделены Чекбоксом.
(см. слот по нажатию на 2-ю кнопку)
QCheckBox *checkBox = qobject_cast<QCheckBox*>(item->layout()->itemAt(0)->widget());
https://pastebin.com/7ByCWPBV
Заранее спасибо!
Ну блин, сложно так разобраться в структуре чужого окна.

0) добавь проверки. КАЖДЫЙ указатель надо проверять (ну, почти).
1) Не используй лейауты для доступа к элементам интерфейса — они все доступны напрямую из формы (элемент UI)

Я думаю, если ты аккуратно добавишь все проверки, и ещё потом поползаешь по коду с отладчиком, ты очень быстро разберёшься, что там не так.


Вот у тебя выражение:

QCheckBox *checkBox = qobject_cast<QCheckBox*>(item->layout()->itemAt(0)->widget());

item может быть nullptr

layout () может быть nullptr

itemAt(0) может быть nullptr

и widget() тоже может быть nullptr.


Тебе надо расписать эти все выражения на части и проверять,
если ты убедишься , что по коду так не бывает, что какой-то элемент выражения nullptr - соберёшь этот кусок обратно.
источник

IZ

Ilia Zviagin in Qt
WhoAmI?
@anatolijs как установка лэйаута может влиять на чекбокс?..
Ты через лейаут лезешь в чекбокс, так что НАПРЯМУЮ может.
источник

AT

Anatoly Tomilov in Qt
Sofia
Спасибо
помогло?
источник

S

Sofia in Qt
да
источник

W

WhoAmI? in Qt
Ilia Zviagin
Ну блин, сложно так разобраться в структуре чужого окна.

0) добавь проверки. КАЖДЫЙ указатель надо проверять (ну, почти).
1) Не используй лейауты для доступа к элементам интерфейса — они все доступны напрямую из формы (элемент UI)

Я думаю, если ты аккуратно добавишь все проверки, и ещё потом поползаешь по коду с отладчиком, ты очень быстро разберёшься, что там не так.


Вот у тебя выражение:

QCheckBox *checkBox = qobject_cast<QCheckBox*>(item->layout()->itemAt(0)->widget());

item может быть nullptr

layout () может быть nullptr

itemAt(0) может быть nullptr

и widget() тоже может быть nullptr.


Тебе надо расписать эти все выражения на части и проверять,
если ты убедишься , что по коду так не бывает, что какой-то элемент выражения nullptr - соберёшь этот кусок обратно.
Спасибо, так и попробую 🙏
источник

ДБ

Давид Бурдуковский... in Qt
Ребята
источник

ДБ

Давид Бурдуковский... in Qt
Подскажите что нужно сделать
источник

ДБ

Давид Бурдуковский... in Qt
Чтобы приложение написанное в qt
источник