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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите нубу)  (Прочитано 5341 раз)
tw333k
Гость
« : Февраль 26, 2010, 18:41 »

Вообщем начинаю изучение QT (ПОД VS 2008). Начал написание с простой программки, и столкнулся с такой проблемой.

idabz.h
Код:
#ifndef IDABZ_H
#define IDABZ_H

#include <QtGui/QMainWindow>
#include "ui_idabz.h"

class IDABZ : public QMainWindow
{
Q_OBJECT

public:
IDABZ(QWidget *parent = 0, Qt::WFlags flags = 0);
~IDABZ();

private:
Ui::IDABZClass ui;

private slots:
void on_quitbutton_clicked();
void on_pushButton_2_clicked();
};

#endif // IDABZ_H


idbaz.cpp
Код:
#include <QtGui>
#include "idabz.h"

using namespace std;

IDABZ::IDABZ(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
this->setWindowState(Qt::WindowMaximized);
connect(ui.quitbutton, SIGNAL(triggered()),this,SLOT(on_quitbutton_clicked()));
}

IDABZ::~IDABZ()
{

}





main

Код:
#include <QtGui/QApplication>
#include "idabz.h"

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
IDABZ w;
w.show();
return a.exec();
}

Выдаёт ошибку
1>moc_idabz.obj : error LNK2019: ссылка на неразрешенный внешний символ "private: void __thiscall IDABZ::on_pushButton_2_clicked(void)" (?on_pushButton_2_clicked@IDABZ@@AAEXXZ) в функции "public: virtual int __thiscall IDABZ::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@IDABZ@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
1>moc_idabz.obj : error LNK2019: ссылка на неразрешенный внешний символ "private: void __thiscall IDABZ::on_quitbutton_clicked(void)" (?on_quitbutton_clicked@IDABZ@@AAEXXZ) в функции "public: virtual int __thiscall IDABZ::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@IDABZ@@UAEHW4Call@QMetaObject@@HPAPAX@Z)

Вот. Прошу консультации . В книжках в основном кнопки создают не через QT Designer. Если можно посоветуете с чего учиться )

З.Ы заранее спасибо всем откликнувшимся
Записан
tw333k
Гость
« Ответ #1 : Февраль 26, 2010, 19:11 »

Ошибка пропадает, если из indbz.h удаляю строки отвечающие за кнопки. Но при этом кнопка при нажатие ничего не делает.
Записан
Amigo_sa
Гость
« Ответ #2 : Февраль 26, 2010, 19:14 »

необходимо написать реализацию слотов в idabz.cpp
Код:
void IDABZ::on_quitbutton_clicked()
{
// something
}

void IDABZ::on_pushButton_2_clicked()
{
// something
}
Записан
tw333k
Гость
« Ответ #3 : Февраль 26, 2010, 19:19 »

а не подскажите а что допустим надо написать для реализации выхода из программы. И вообще где можно посмотреть стандартные реализации?
Записан
Amigo_sa
Гость
« Ответ #4 : Февраль 26, 2010, 19:40 »

Для выхода из приложения нужно написать
Цитировать
QCoreApplication::exit ();
А вообще нужно читать кутешный Assistant - образец документации  Подмигивающий
Записан
tw333k
Гость
« Ответ #5 : Февраль 26, 2010, 19:43 »

спасибо) просто в английском не очень силён=/
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Февраль 26, 2010, 19:44 »

Привыкнешь. Улыбающийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
SABROG
Гость
« Ответ #7 : Февраль 27, 2010, 01:31 »

Для выхода из приложения нужно написать
Цитировать
QCoreApplication::exit ();
А вообще нужно читать кутешный Assistant - образец документации  Подмигивающий

Надо быть повнимательней с методами quit() и exit(), они возвращают управление после их вызова и ждут возвращения в главный цикл. quit() вызывает exit(). Если про эту особенность написано в документации к методу exit(), то насчет quit() она лукаво умалчивает, говоря всего-лишь, что quit() и exit(0) эквивалентны.

Код
C++ (Qt)
           qApp->exit(); //или qApp->quit(), разницы нет
           forever
               qDebug("Hitler kaput bitte!");
 

С этим кодом программа не завершится никогда. И даже с этим:

Код
C++ (Qt)
           forever {
               qDebug("Hitler kaput bitte!");
               qApp->processEvents();
           }
 

Только такое спасет отца русской демократии:
Код
C++ (Qt)
   qApp->exit();
   return;
 

Выглядит глупо, конечно, с точки зрения логики. Методам скорее бы подошло название exitLater(), quitLater().
« Последнее редактирование: Февраль 27, 2010, 01:35 от SABROG » Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #8 : Февраль 27, 2010, 15:28 »

спасибо) просто в английском не очень силён=/
в таких случаях люди вспоминают о книжных магазинах.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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