Здравствуйте, гость ( Вход | Регистрация )
Antrix | Дата 16.11.2008, 21:29 |
Ну а почему тогда, если создаю точно такую же функцию а не слот, компилятор не ругается? Раскрывающийся текст
#endif |
|
Litkevich Yuriy | Дата 16.11.2008, 18:51 |
Antrix, я что-то сразу не сообразил в Асистент посмотреть, теперь смотрю и вижу: т.е. конструктор копирования не доступен.Если функция объявленна так:
и соответственно ты ее вызываешь так: компилятор должен будет вызвать конструктор копирования, которого нет, вот он и ругается. |
|
Antrix | Дата 16.11.2008, 16:50 |
Вот: Раскрывающийся текст /**************************************************************************** ** Meta object code from reading C++ file 'MainWindow.h' ** ** Created: Sun 16. Nov 11:56:19 2008 ** by: The Qt Meta Object Compiler version 59 (Qt 4.4.1) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #include "../../../MainWindow.h" #if !defined(Q_MOC_OUTPUT_REVISION) #error "The header file 'MainWindow.h' doesn't include <QObject>." #elif Q_MOC_OUTPUT_REVISION != 59 #error "This file was generated using the moc from 4.4.1. It" #error "cannot be used with the include files from this version of Qt." #error "(The moc has changed too much.)" #endif QT_BEGIN_MOC_NAMESPACE static const uint qt_meta_data_MainWindow[] = { // content: 1, // revision 0, // classname 0, 0, // classinfo 11, 10, // methods 0, 0, // properties 0, 0, // enums/sets // signals: signature, parameters, type, tag, flags 12, 11, 11, 11, 0x05, 36, 11, 11, 11, 0x05, 54, 11, 11, 11, 0x05, // slots: signature, parameters, type, tag, flags 72, 11, 11, 11, 0x0a, 92, 11, 11, 11, 0x0a, 112, 11, 11, 11, 0x0a, 127, 11, 11, 11, 0x0a, 144, 11, 11, 11, 0x0a, 162, 11, 11, 11, 0x0a, 186, 11, 11, 11, 0x0a, 219, 217, 11, 11, 0x0a, 0 // eod }; static const char qt_meta_stringdata_MainWindow[] = { "MainWindow\0\0sendText(QTextDocument)\0" "sendText(QString)\0sendNick(QString)\0" "slotSetServerMode()\0slotSetClientMode()\0" "slotSendText()\0slotChangeNick()\0" "slotClientError()\0slotTextOutput(QString)\0" "slotTextOutput(QTextDocument*)\0a\0" "test(QTextDocument)\0" }; const QMetaObject MainWindow::staticMetaObject = { { &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow, qt_meta_data_MainWindow, 0 } }; const QMetaObject *MainWindow::metaObject() const { return &staticMetaObject; } void *MainWindow::qt_metacast(const char *_clname) { if (!_clname) return 0; if (!strcmp(_clname, qt_meta_stringdata_MainWindow)) return static_cast<void*>(const_cast< MainWindow*>(this)); if (!strcmp(_clname, "Ui::MainWindow")) return static_cast< Ui::MainWindow*>(const_cast< MainWindow*>(this)); return QMainWindow::qt_metacast(_clname); } int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QMainWindow::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: sendText((*reinterpret_cast< const QTextDocument(*)>(_a[1]))); break; case 1: sendText((*reinterpret_cast< const QString(*)>(_a[1]))); break; case 2: sendNick((*reinterpret_cast< QString(*)>(_a[1]))); break; case 3: slotSetServerMode(); break; case 4: slotSetClientMode(); break; case 5: slotSendText(); break; case 6: slotChangeNick(); break; case 7: slotClientError(); break; case 8: slotTextOutput((*reinterpret_cast< QString(*)>(_a[1]))); break; case 9: slotTextOutput((*reinterpret_cast< QTextDocument*(*)>(_a[1]))); break; case 10: test((*reinterpret_cast< QTextDocument(*)>(_a[1]))); break; } _id -= 11; } return _id; } // SIGNAL 0 void MainWindow::sendText(const QTextDocument & _t1) { void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) }; QMetaObject::activate(this, &staticMetaObject, 0, _a); } // SIGNAL 1 void MainWindow::sendText(const QString & _t1) { void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) }; QMetaObject::activate(this, &staticMetaObject, 1, _a); } // SIGNAL 2 void MainWindow::sendNick(QString _t1) { void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) }; QMetaObject::activate(this, &staticMetaObject, 2, _a); } QT_END_MOC_NAMESPACE |
|
Litkevich Yuriy | Дата 16.11.2008, 14:02 |
Antrix, выкладывай moc_MainWindow.cpp | |
Antrix | Дата 16.11.2008, 13:11 |
Вот объявление класса
Реализация
Ошибка:
|
|
Litkevich Yuriy | Дата 15.11.2008, 16:41 |
Antrix, я вообще не понял о чем ты. можешь привести объявление класса и реализацию слота? | |
Antrix | Дата 15.11.2008, 15:16 |
А если писать void test(QTextDocument*); вместо void test(QTextDocument);- то ошибка уже не возникает. Так в чем же дело это баг, или я что то не правильно делаю? |
|
Antrix | Дата 15.11.2008, 13:55 |
Нет дело не в том, вот я переименовал слот: public slots: void test(QTextDocument); Ошибка таже. |
|
molchanoviv | Дата 15.11.2008, 12:40 |
потому-что slot это ключевое слово для moc | |
Antrix | Дата 15.11.2008, 10:27 |
Еще один вопрос: почему когда я создаю функцию void f(QTextDocument); - то компилятор не выдаёт ошибок, а если я создаю слот public slots: void slot(QTextDocument); - то выдает вот такую ошибку:
Компилятор - visual studio 2005 + qt |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 18:00 |