вопрос по QT - решено

Модератор: Модераторы разделов

Аватара пользователя
pps
Сообщения: 17
ОС: Fedora 7

вопрос по QT - решено

Сообщение pps »

имеются два диалога. из первого вызывается второй, по его закрытию на первом надо вызвать слот.
как именно это можно сделать?
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: вопрос по QT - решено

Сообщение eduard_pustobaev »

Ну скажем, если диалог - QDialog или наследник. Либо другой какой потомок от QWidget, то всё просто:

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

QObject::connect(dialog2, SIGNAL(close()), dialog1, SLOT(neededSlot());


Хотя это просто на закрытие реагирует. Для диалогов есть более конкретные сигналы, дающие понятие о том, как оный диалог сработал.

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

accept(), reject ()
В дисгармонии со вселенной.
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: вопрос по QT - решено

Сообщение v04bvs »

eduard_pustobaev писал(а):
15.08.2007 13:52
Ну скажем, если диалог - QDialog или наследник. Либо другой какой потомок от QWidget, то всё просто:

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

QObject::connect(dialog2, SIGNAL(close()), dialog1, SLOT(neededSlot());


Хотя это просто на закрытие реагирует. Для диалогов есть более конкретные сигналы, дающие понятие о том, как оный диалог сработал.

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

accept(), reject ()

QDialog::close() это же слот. Или я что то пропустил?
Спасибо сказали:
Аватара пользователя
Alxn1
Сообщения: 402
Статус: Красноглазик со стажем
ОС: Mavericks

Re: вопрос по QT - решено

Сообщение Alxn1 »

Да, это слот. У QDialog усть сигнал void finished ( int result ). В 4-м по крайней мере.
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: вопрос по QT - решено

Сообщение eduard_pustobaev »

v04bvs писал(а):
15.08.2007 17:51
QDialog::close() это же слот. Или я что то пропустил?

Нет, всё правильно. QWidget::close() - слот. Это я подзабыл немного.
У диалога есть подходящие для такого сигналы:
void accepted ()
void finished ( int result )
void rejected ()
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
pps
Сообщения: 17
ОС: Fedora 7

Re: вопрос по QT - решено

Сообщение pps »

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

QObject::connect(dialog2, SIGNAL(close()), dialog1, SLOT(neededSlot());


Это нужно прописывать в первой форме или во второй?
Спасибо сказали:
Аватара пользователя
pps
Сообщения: 17
ОС: Fedora 7

Re: вопрос по QT - решено

Сообщение pps »

Надо ли как то этот сигнал в коде прописывать? Потому что у меня ругнулось:
QObject::connect: No such signal dEditDialog::rejected()
Спасибо сказали:
Аватара пользователя
pps
Сообщения: 17
ОС: Fedora 7

Re: вопрос по QT - решено

Сообщение pps »

Всем спасибо! Разобрался, все получилось. :drinks:
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: вопрос по QT - решено

Сообщение eduard_pustobaev »

pps писал(а):
16.08.2007 10:51
Всем спасибо! Разобрался, все получилось. :drinks:

Всё хорошо, что хорошо кончается.
P.S. Кто-нибудь QThreads использует? Так, интересуюсь просто.
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
pps
Сообщения: 17
ОС: Fedora 7

Re: вопрос по QT - решено

Сообщение pps »

Новый вопрос. Как в QT можно определить количество атрибутов в ноде xml и их значения? в ассистанте ничего не нашел
например <noda x1=2 x2=2 x3=3>
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: вопрос по QT - решено

Сообщение eduard_pustobaev »

Почему же нету? Есть:

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

QDomNamedNodeMap attribs = QDomNode::attributes();
int count = attribs.count();
(QDomNode item ( int index ), QDomNode namedItem ( const QString & name ) const)
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
pps
Сообщения: 17
ОС: Fedora 7

Re: вопрос по QT - решено

Сообщение pps »

Подскажите плиз!

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


//ищу нужную ноду
if( n.nodeName()=="Row" )
{
    //есть атрибут ss:Index, который равен например 10
    QDomAttr a = n.toElement().attributeNode( "ss:Index" );
    //копирую всю эту ветку
    n.parentNode().insertAfter(n.cloneNode(true),n);

}


На какой ноде я после копирования? На той которую скопировал или предыдущей? И как заменить значение ss:Index на скопированой ноде?

Пробовал заменять после

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

n.parentNode().insertAfter(n.cloneNode(true),n);

Так он все заменил, и исходную и скопированную
Спасибо сказали:
Аватара пользователя
pps
Сообщения: 17
ОС: Fedora 7

Re: вопрос по QT - решено

Сообщение pps »

Спасибо eduard_pustobaev!
Я разобрался! :)
Спасибо сказали:
Аватара пользователя
pps
Сообщения: 17
ОС: Fedora 7

Re: вопрос по QT - решено

Сообщение pps »

Как можно обойти дерево QListViewItem?
Проблема возникает при переходе с последней child ветки на следующую от парента этой child ветки
Допустим есть item с которого надо начать обход
item
item1

a

b

c

item2

d

item3


Так вот когда нахожусь на с nextSibling () не переходит на item2
Как правильно обойти дерево?
Спасибо сказали: