Russian Qt Forum

Qt => Общие вопросы => Тема начата: Егор от Ноябрь 09, 2014, 16:55



Название: Не срабатывает слот
Отправлено: Егор от Ноябрь 09, 2014, 16:55
Создал потомка QDialog, сделал свой слот, соединил с кнопкой (прямо в конструкторе):
Код:
connect(okBut, SIGNAL(clicked()), SLOT(okButPress()));

При нажатии на кнопку появляется следующее сообщение: Object::connect: No such slot QDialog::okButPress() in

Но, в классе не подключал макрос Q_OBJECT. Если его подключить, то получаю ошибку в строке:
Код:
Settings::Settings(QDialog *dial):
    QDialog(dial)


Название: Re: Не срабатывает слот
Отправлено: gil9red от Ноябрь 09, 2014, 17:09
Покажите содержимое заголовочного файла этого класса


Название: Re: Не срабатывает слот
Отправлено: Егор от Ноябрь 09, 2014, 17:43
Код:
#ifndef SETTINGS_H
#define SETTINGS_H

#include <QDialog>
#include <QLineEdit>
#include <QPushButton>

//Класс окна настроек
class Settings:public QDialog{

public:
    Settings(QDialog* dial=0);
    //Методы для получения введённых данных
    QString getIp();
    QString getport1();
    QString getport2();

private:
    //Компоненты окна настроек
    QLineEdit *ipLine, * localPortLine, *portLine;
    QPushButton *okBut, *cancelBut;

private slots:
    void okButPress();
};

#endif // SETTINGS_H


Название: Re: Не срабатывает слот
Отправлено: kambala от Ноябрь 09, 2014, 17:50
Settings(QWidget* parent=0);

а Q_OBJECT конечно надо написать.


Название: Re: Не срабатывает слот
Отправлено: Егор от Ноябрь 09, 2014, 17:54
Settings(QWidget* parent=0);

а Q_OBJECT конечно надо написать.

Мне нужно модальное окно.


Название: Re: Не срабатывает слот
Отправлено: gil9red от Ноябрь 09, 2014, 17:58
Settings(QWidget* parent=0);

а Q_OBJECT конечно надо написать.

Мне нужно модальное окно.

используйте exec для запуска в модальном, а тип конструктора на модальность окна не влияет :)


Название: Re: Не срабатывает слот
Отправлено: Егор от Ноябрь 09, 2014, 18:20
Я просто лох. Нужно было пересобрать makefile через qmake, ибо макрос Q_OBJECT я подключил в самом конце. Всё работает и с QDialog.


Название: Re: Не срабатывает слот
Отправлено: Егор от Ноябрь 09, 2014, 18:22
Цитировать
используйте exec для запуска в модальном, а тип конструктора на модальность окна не влияет :)

А вот этого я не понял. Не могли бы вы пояснить?


Название: Re: Не срабатывает слот
Отправлено: kambala от Ноябрь 09, 2014, 18:22
но это не совсем правильно. посмотри на конструктор QDialog.
Цитировать
используйте exec для запуска в модальном, а тип конструктора на модальность окна не влияет :)

А вот этого я не понял. Не могли бы вы пояснить?
показывай диалог через exec вместо show


Название: Re: Не срабатывает слот
Отправлено: Егор от Ноябрь 09, 2014, 18:31
Всё, понял. Спасибо вам за помощь.