crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Диалоговое окно, проблемы
registr
  опции профиля:
сообщение 16.8.2010, 11:23
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 115
Регистрация: 16.11.2009
Пользователь №: 1234

Спасибо сказали: 8 раз(а)




Репутация:   1  


Не могу никак разобраться с появлением диалогового окна в главном окне. Помогите, пожалуйста, разобраться. Вот сам код:

createdialog.h
#ifndef CREATEDIALOG_H 
#define CREATEDIALOG_H

#include <QDialog.h>
#include "mainwindow.h"

class CreateDialog : public QDialog //, public MainWindow
{
   Q_OBJECT; // Макрос Q_0BJECT необходимо задавать в начале определения любого класса, содержащего сигналы или слоты.
  
   private slots:
      void okPush();
      void sph4();
      void sph5();
  
   private:  
      QLabel *info;
      
      QRadioButton *sph4Button;
      QRadioButton *sph5Button;
  
      QPushButton *okButton;
      QPushButton *cancelButton;
  
   public:
      CreateDialog(QWidget *parent=0); // !здесь происходит ошибка!
      
};
#endif


createdialog.cpp
#include <QtGui>
#include "mainwindow.h"
#include "createdialog.h"
#include "point3D.h"

static int iteration=4;

CreateDialog::CreateDialog(QWidget *parent) : QDialog(parent)
{
   QTextCodec *codec = QTextCodec::codecForName("CP1251"); // подключаю текстовые кодеки
   QTextCodec::setCodecForTr(codec);  
        
   this->setWindowTitle(tr("Создать карту...")); // название
  
   this->setModal(true); // модальное окно
  
   info = new QLabel(tr("Выберете, пожалуйста, детализацию карты:"), this);
  
   sph4Button = new QRadioButton(tr("Низкая"), this);
   sph5Button = new QRadioButton(tr("Средняя"), this);    
  
   sph4Button->setChecked(true);
      
   connect(sph4Button, SIGNAL(clicked()), this, SLOT(sph4()));
   connect(sph5Button, SIGNAL(clicked()), this, SLOT(sph5()));        
  
   okButton = new QPushButton(tr("Ok"));
   cancelButton = new QPushButton(tr("Отмена"));
  
   connect(okButton, SIGNAL(clicked()), this, SLOT(okPush()));
   connect(cancelButton, SIGNAL(clicked()), this, SLOT(close()));  
  
   QVBoxLayout *layout1 = new QVBoxLayout;
  
   QVBoxLayout *layout2 = new QVBoxLayout;
   QHBoxLayout *layout3 = new QHBoxLayout;
  
   layout2->addWidget(info);  
   layout2->addWidget(sph4Button);
   layout2->addWidget(sph5Button);  
  
   layout3->addWidget(okButton);
   layout3->addWidget(cancelButton);
  
   layout1->addLayout(layout2);
   layout1->addLayout(layout3);
  
   setLayout(layout1); // устанавливает менеджер компоновки для окна
   setFixedHeight(sizeHint().height()); // возвращает "идеальный" размер виджета
  
   this->show();              
}

void CreateDialog::okPush() {set_temp(iteration); this->close();}

void CreateDialog::sph4() {iteration=4;}

void CreateDialog::sph5() {iteration=5;}


В главном окне Диалог вызывается соответственно:
CreateDialog *create_dialog = new CreateDialog;


При компиляции выдается сообщение:
macro "CreateDialogW" requires 4 arguments, but only 1 given
макрос "CreateDialogW" требует 4 аргумента, но дан только 1

Выдается ошибка в файле createdialog.h в конструкторе
CreateDialog(QWidget *parent=0); // !здесь происходит ошибка!

declaration does not declare anything
декларация ничего не декларирует

Бью голову, не понимаю в чем дело... :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
registr
  опции профиля:
сообщение 17.8.2010, 12:12
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 115
Регистрация: 16.11.2009
Пользователь №: 1234

Спасибо сказали: 8 раз(а)




Репутация:   1  


BRE, Litkevich Yuriy, Алексей1153 спасибо! Назвал класс MyDialog и конструктор MyDialog() - диалоговое окно появилось.

Но появилась другая проблема. (см. рисунок demo.jpg).

У меня есть два разных класса: MainWindow и MyDialog. Метод нажатия на клавишу "Oк" okPush() принадлежит классу MyDialog, а метод создания новой карты create_new() принадлежит классу MainWindow. А как их сочленить так, чтобы при нажатии на клавишу "Ok" вызывался метод create_new()? Подскажите пожалуйста как это сделать граммотно и профессионально?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.6.2024, 10:31