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

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не срабатывает слот  (Прочитано 4839 раз)
Егор
Гость
« : Ноябрь 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)
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Ноябрь 09, 2014, 17:09 »

Покажите содержимое заголовочного файла этого класса
Записан

Егор
Гость
« Ответ #2 : Ноябрь 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
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Ноябрь 09, 2014, 17:50 »

Settings(QWidget* parent=0);

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Егор
Гость
« Ответ #4 : Ноябрь 09, 2014, 17:54 »

Settings(QWidget* parent=0);

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

Мне нужно модальное окно.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #5 : Ноябрь 09, 2014, 17:58 »

Settings(QWidget* parent=0);

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

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

используйте exec для запуска в модальном, а тип конструктора на модальность окна не влияет Улыбающийся
Записан

Егор
Гость
« Ответ #6 : Ноябрь 09, 2014, 18:20 »

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

Цитировать
используйте exec для запуска в модальном, а тип конструктора на модальность окна не влияет Улыбающийся

А вот этого я не понял. Не могли бы вы пояснить?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #8 : Ноябрь 09, 2014, 18:22 »

но это не совсем правильно. посмотри на конструктор QDialog.
Цитировать
используйте exec для запуска в модальном, а тип конструктора на модальность окна не влияет Улыбающийся

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Егор
Гость
« Ответ #9 : Ноябрь 09, 2014, 18:31 »

Всё, понял. Спасибо вам за помощь.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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