Страница 1 из 1

QT4.6 как заставить виджет открываться по нажатию кнопки?

Добавлено: 2010-09-18 21:54:39
Dice
Подскажите пожалуйста по сабжу.
Подобным образом хочу связать два окна, грубо говоря одно окно с кнопкой ОК - нажимаем ОК открывается главное окно, окно с кнопкой ОК закрывается.

Непонятно два момента:
1. Нужно ли добавлять для того окна. которое открывается по клику на кнопку ОК (допустим класс MainWindow) что-либо в следующий блок или нет:

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

int main (int argc, char** argv)
{
    QApplication app(argc, argv);
    FormOk	ok;

    
ok.show();
    
    return app.exec();
}
2. Непонятно какое действие нужно привязать к кнопке, чтобы виджет открылся. Я так полагаю нечто подобное есть неправильно:

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

void FormOk::ok() {
MainWindow	mw;
mw.show();
}

Re: QT4.6 как заставить виджет открываться по нажатию кнопки

Добавлено: 2010-09-20 9:14:46
Dambo
Видимо вы совсем не знакомы с Qt, в этой библиотеки связи с объектами принято связывать сигналами и слотами.
Вкратце все классы должны наследоваться от QObject или производных от него классов, что бы поддерживать сигналы и слоты.
Скачайте в интернете книгу по qt, советую Макса Шлее "qt для профессионалов" там подробно всё описанно.
пс. лучше купить в бумажном виде как я :-D , qt с собой таскает документацию QtAssistant всё что не работает можно сверять с тем что там написано)

Вот то что вы хотели:

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

#include <QtGui>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QPushButton *buttOK = new QPushButton;
    QMainWindow *mw = new QMainWindow;
    buttOK->setText("OK");
    buttOK->show();
    QObject::connect(buttOK,SIGNAL(clicked()),buttOK,SLOT(close()));
    QObject::connect(buttOK,SIGNAL(clicked()),mw,SLOT(show()));


    return a.exec();
}

Re: QT4.6 как заставить виджет открываться по нажатию кнопки

Добавлено: 2010-09-20 15:01:40
Dice
Благодарю за ответ :)
Именно эту книгу я и скачал и распечатал.
Но там я не нашел подобного примера, и даже не думал что это один из стандартных слотов, автор пишет забористо, но подобные мелочи иногда обходит стороной не делая на них сильного акцента. Так что пойду искать набор стандартных слотов.