Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] Потерялись сигналы


Автор: Serbis 29.3.2008, 15:23
Добрый день, не могу найти ошибку в программе. 

textDialog.h
Код

signals:
    void fontChanged(const QFont *font);
    void colorChanged(const QColor *color);

private:
    QFont *currentFont;
    QColor *currentColor;


textDialog.cpp
Код

void TextDialog::okButtonClicked()
{
    emit colorChanged(currentColor);
    emit fontChanged(currentFont);    
}

mainwindow.cpp
Код

void MainWindow::textFormat()
{
    textDialog = new TextDialog(this);
    connect(textDialog, SIGNAL(colorChanged(const QColor &)), word, SLOT(colorChanged(const QColor &)));
    connect(textDialog, SIGNAL(fontChanged(const QFont &)), word, SLOT(fontChanged(const QFont &)));
    textDialog->show();
    textDialog->activateWindow();
}



При нажатии кнопки okButton диалог должен отсылать значения currentFont и currentColor в основной модуль. Получаю ошибку о том что сигналы отсутствуют: 
Object::connect: No such signal TextDialog::colorChanged(QColor)
Object::connect:  (sender name:   'textDialog')
Object::connect: No such signal TextDialog::fontChanged(QFont)
Object::connect:  (sender name:   'textDialog')

Автор: JackYF 29.3.2008, 16:34
Цитата(Serbis @  29.3.2008,  14:23 Найти цитируемый пост)
void fontChanged(const QFont *font);
    void colorChanged(const QColor *color);


Цитата(Serbis @  29.3.2008,  14:23 Найти цитируемый пост)
connect(textDialog, SIGNAL(colorChanged(const QColor &)), word, SLOT(colorChanged(const QColor &)));
    connect(textDialog, SIGNAL(fontChanged(const QFont &)), word, SLOT(fontChanged(const QFont &)));

Разницу видишь? В объявление у тебя передача по указателю, а при коннекте - по ссылке.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)