Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не действуют кнопки в диалоговом окне, Не работает как должно connect 
V
    Опции темы
Nikys
Дата 9.5.2013, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 9.5.2013

Репутация: нет
Всего: нет



Доброго всем вечера или ночи.
Пишу Qt4 проект на C++. Суть в том, что есть главное окно, которое по нажатию кнопки открывает диалоговое окно. Есть Line Edit, кнопка ОК (самописная, не из QDialogButtonBox, по которой должна вызываться процедура для добавления этой строки в QList, но это другая история) и кнопка Отмена (просто закрывает форму).
Описал для обеих форм классы, описал методы и конструктор с коннектом. Формы нарисовал в QtDesigner.
Суть в том, что вторая форма открывается, но никак не реагирует на нажатия кнопок и не выполняет нужную процедуру по нажатию Enter в Line Edit (лишь закрывая при этом форму, т.е., по нажатию Enter в Line Edit). Я так понял, что либо не отсылается сигнал на слот, либо не слот не принимает сигнал. Либо я по другой статье залетел.
Все размещено в трех файлах (mainwindow.h, main.cpp, mainwindow.cpp) и юзаются формы (mainwindow.ui, newteam.ui).
В файле mainwindow.h:

Код

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QDialog>
#include <QMessageBox>
#include <QtSql>
#include <QtDebug>
#include <QList>
#include "ui_mainwindow.h"
#include "ui_newteam.h"
//...
 
//-----------------MAIN WINDOW-------------------------------------------------------
 
class MainWindow : public QMainWindow, public Ui::MainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
 
public slots:
    void open_newTeam();
    //...
};
 
//---------------NEW TEAM WINDOW-----------------------------------------------------
 
class newTeam:public QDialog, public Ui::Dialog
{
    Q_OBJECT
 
public:
    explicit newTeam(QWidget *parent = 0);
public slots:
   void add_newTeam();
};
//...
 
#endif // MAINWINDOW_H


В mainwindow.cpp

Код

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "ui_newteam.h"
#include "ui_watchteam.h"
#include "ui_watchtotal.h"
#include "ui_startroach.h"
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    setupUi(this);
    connect(newTeamButton, SIGNAL(clicked()), this, SLOT(open_newTeam()));
    connect(watchTeamButton, SIGNAL(clicked()), this, SLOT(open_watchTeam()));
    connect(watchTotalButton, SIGNAL(clicked()), this, SLOT(open_watchTotal()));
    connect(startRoachButton, SIGNAL(clicked()), this, SLOT(open_startRoach()));
    connect(closeMainWindow, SIGNAL(clicked()), this, SLOT(close()));
}
 
newTeam::newTeam(QWidget *parent) :
    QDialog(parent)
{
    setupUi(this);
    connect(cancelTeamButton, SIGNAL(clicked()), this, SLOT(close()));
    connect(addTeamButton, SIGNAL(clicked()), this, SLOT(add_newTeam()));
    connect(lineEdit, SIGNAL(returnPressed()), this, SLOT(add_newTeam()));
}
//...
 
void MainWindow::open_newTeam()
{
    newTeam *wTeam = new newTeam;
    wTeam->setFixedSize(400,100);
    wTeam->setupUi(wTeam);
    wTeam->setWindowFlags(Qt::WindowContextHelpButtonHint);
    wTeam->setWindowModality(Qt::ApplicationModal);
    wTeam->setWindowTitle("Нова команда");
    wTeam->show();
    wTeam->activateWindow();
}
//...
 


В main.cpp, вроде бы, нет ничего, что могло бы повлиять на проблему. Все, что связывает его с формами - объявление и показ формы из MainWindow.
Всем заранее спасибо за ответы. Прошу прощения за глупые вопросы.
Конструктивная критика по поводу кривости реализации приветствуется.

Это сообщение отредактировал(а) Nikys - 9.5.2013, 22:15
PM MAIL   Вверх
borisbn
Дата 9.5.2013, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



1. Если мне не изменяет память, то moc-компилятор требует, чтобы один класс был описан в одном файле
2. Что пишется в окне вывода ?
3. Чем тебе QInputDialog::getItem() не устраивает ?



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Nikys
Дата 9.5.2013, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 9.5.2013

Репутация: нет
Всего: нет



Цитата(borisbn @  9.5.2013,  22:58 Найти цитируемый пост)
1. Если мне не изменяет память, то moc-компилятор требует, чтобы один класс был описан в одном файле

Я просто не знаю, как тогда можно связать между собой, чтобы новое открытое окно открывалось из другого окна. Чтобы не было множественного включения библиотек.

Цитата(borisbn @  9.5.2013,  22:58 Найти цитируемый пост)
2. Что пишется в окне вывода ?

Окно вывода считает, что программа работает целиком правильно.


Цитата(borisbn @  9.5.2013,  22:58 Найти цитируемый пост)
3. Чем тебе QInputDialog::getItem() не устраивает ?

Честно, не знал. Спасибо, пригодится. Но вопрос остается в силе, так как у меня будут и другие окна, уже не диалоговые.
PM MAIL   Вверх
Nikys
Дата 10.5.2013, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 9.5.2013

Репутация: нет
Всего: нет



borisbn, и ещё тогда можно задать к вам вопрос? Если у меня присутствует БД в программе, то желательно также описать класс (с методами по добавлению информации и считыванию), который будет работать с ней?
PM MAIL   Вверх
math64
Дата 10.5.2013, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Чтобы избежать лишних включений заголовков, обычно используют не множественноенаследование, а включают Ui::Dialog* ui в качестве поля класса.
#include "ui_newteam.h" тогда включается в cpp файле.
PM   Вверх
Nikys
Дата 10.5.2013, 04:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 9.5.2013

Репутация: нет
Всего: нет



Спасибо всем за советы! После реорганизации программы должным образом (класс в отдельный хедер, отдельный cpp для него) и использование в поле класса Ui::className *ui вроде как начало работать smile
Теперь буду твердо знать, что игнорировать советы умных людей, которые документацию составляют, нехорошо. Вроде как проблема решена smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0655 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.