crossplatform.ru

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

3 страниц V  < 1 2 3 >  
Ответить в данную темуНачать новую тему
> создание собственных диалоговых окон
breeve
  опции профиля:
сообщение 30.12.2009, 16:19
Сообщение #11


Участник
**

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

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




Репутация:   1  


Цитата(Litkevich Yuriy @ 30.12.2009, 16:18) *
вот это я не пойму, если есть ошибка компиляции, то программу нельзя запустить. Если окно появляется, значит ошибки компиляции нет.
Всмысле я имел ввиду должно быть пустое))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 30.12.2009, 16:21
Сообщение #12


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


breeve, если всё таки не компилируется, смотри подключил ли ты include в том файле где используешь этот диалог. А также добавил ли эти файлы в проект

о том как вызывать (распространённый случай) диалоговые окна смотри в разделе Code Examples описания класса QDialog
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 30.12.2009, 16:27
Сообщение #13


Участник
**

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

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




Репутация:   1  


Файлы подключены правильно в этом я уверен, и в проекте добавлены

По ссылке были два примера, я попробовал оба и выскакивает та же ошибка(


Сообщение отредактировал breeve - 30.12.2009, 16:28
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 30.12.2009, 16:35
Сообщение #14


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(breeve @ 30.12.2009, 19:27) *
По ссылке были два примера, я попробовал оба и выскакивает та же ошибка(
эта ошибка к тем примерам отношения не имеет, они имеют отношение к работтоспособности программы, которая успешно откомпилировалась.

Здаётся мне, что следует написать хотябы одну фиктивную переменную-член класса, а то класс как бы пустой, не знаю как это обозвать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 30.12.2009, 16:41
Сообщение #15


Участник
**

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

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




Репутация:   1  


Цитата
Здаётся мне, что следует написать хотябы одну фиктивную переменную-член класса, а то класс как бы пустой, не знаю как это обозвать.

у меня есть пример рабочий.. единственное отличие - там главное окно наследуется от кнопки.. Так вот там работает все нормально даже с пустым конструктором, и без каких-либо функций. и открывается пустое окно. Тем более у меня тут написано несколько функции, я их просто закомментил чтобы не путаться. И с ними та же ошибка..
Я могу кинуть листинг всех файлов если надо..

Сообщение отредактировал breeve - 30.12.2009, 16:44
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 30.12.2009, 17:40
Сообщение #16


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


ещё одна мысль:
Закоментируй деструктор класса, либо пометь его как virtual

П.С. у меня ещё много всяких идей :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 30.12.2009, 20:36
Сообщение #17


Участник
**

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

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




Репутация:   1  


Комментарии не помагают..
Я на самом деле не совсем понимаю как подключать эти файлы.. Всмысле я как их не подключу у меня все время разные ошибки.. Одна другой страшнее)
Вообщем вот весь код:
main.cpp
#include <QtGui>
#include "pass.h"


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Pass w;
    w.setFixedSize(w.minimumSize().width(), w.minimumSize().height());
    w.show();
    return a.exec();
}
pass.h
#ifndef PASS_H
#define PASS_H

#include <QtGui>
#include "inputDialog.h"

class Pass : public QWidget
{
    Q_OBJECT

public:
    QLabel* lbl;
    QLineEdit* ptxt;
    QPushButton* generate;
    QPushButton* settings;
    QVBoxLayout * vLay;
    QHBoxLayout * hLay;
    InputDialog *input;

    Pass(QWidget *parent = 0);
    ~Pass() {};
public slots:
    void slotSettingsClicked();
    void slotGenerate();
};

#endif // PASS_H
pass.cpp
#include "pass.h"
//#include "inputDialog.cpp"
//#include "inputDialog.h"

Pass::Pass(QWidget *parent)
    : QWidget(parent)
{
    qsrand(time(NULL));
    lbl = new QLabel("&Password:");
    ptxt = new QLineEdit;
    lbl->setBuddy(ptxt);

    generate = new QPushButton("Generate");
    settings = new QPushButton("Settings");

    vLay = new QVBoxLayout;
    hLay = new QHBoxLayout;

    hLay->addWidget(generate);
    hLay->addWidget(settings);

    vLay->addWidget(lbl);
    vLay->addWidget(ptxt);
    vLay->addLayout(hLay);
    setLayout(vLay);

    connect(settings, SIGNAL(clicked()), SLOT(slotSettingsClicked()));
    connect(generate, SIGNAL(clicked()), SLOT(slotGenerate()));
}


void Pass::slotSettingsClicked()
{
    InputDialog *input = new InputDialog(this);
    delete input;

   //InputDialog input(this);
   // input.exec();

   /*  if (!input) {
         input = new InputDialog(this);
        // connect(input, SIGNAL(findNext()), this, SLOT(findNext()));
     }

     input->show();
     input->raise();
     input->activateWindow();*/

}

void Pass::slotGenerate()
{
    QString alf = "ABCDEFGHIJKLMNOPRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    QString str;
    int a = 0;
    for(int i = 0; i < 8; i++)
    {
        a = qrand() % 62;
        qDebug() << a;
        str[i] = alf[a];
        
    }
    ptxt->clear();
    ptxt->insert(str);
}
inputDialog.h
#ifndef INPUTDIALOG_H
#define INPUTDIALOG_H

#include <QtGui>

class InputDialog : public QDialog
{
    Q_OBJECT

public:
    InputDialog(QWidget *pwgt);
    //~InputDialog() {};
};

#endif // INPUTDIALOG_H
inputDialog.cpp
#include "inputDialog.h"

InputDialog::InputDialog(QWidget * pwgt)
        : QDialog(pwgt, Qt::WindowTitleHint | Qt::WindowSystemMenuHint)
{
}
pass.pro
# -------------------------------------------------
# Project created by QtCreator 2009-12-29T11:59:19
# -------------------------------------------------
TARGET = randPass
TEMPLATE = app
SOURCES += main.cpp \
    pass.cpp \
    inputDialog.cpp
HEADERS += pass.h \
    inputDialog.h
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 31.12.2009, 1:41
Сообщение #18


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Нормальный рабочий код. Прекрасно компилируется и запускается. :unknown:
Попробуйте все же руками удалить все файлы компиляции *.o, moc_*, сделать заново qmake(обязательно), и откомпилировать проект.

Часто такая ошибка возникает если был обычный класс, а потом в него добавили сигналы/слоты и Q_OBJECT. В этом случае нужно обязательно делать qmake, иначе проект не соберётся, и будут сообщения об ошибках что и у вас.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 31.12.2009, 9:46
Сообщение #19


Участник
**

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

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




Репутация:   1  


Да код то может рабочий, программа запускается.. А когда на кнопку Settings нажимаете что-нибудь происходит?

Да происходит.. Появляется пустое окно.. :yahoo:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 1.1.2010, 22:32
Сообщение #20


Участник
**

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

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




Репутация:   1  


У меня вопрос появился. Как можно из диалогового класса вызвать функцию класса pass. В конструктор диалогового класса как параметр идет указатель на объект. Можно ли им воспользоваться для этого. Юрий написал что "это нужно только для центровки дочернего окна относительно родителя".
У меня диалоговое окно настроек и необходимо после нажатия на ок, чтобы считывалась вся информация и изменяла некоторые переменные в классе pass. Как это реализовать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V  < 1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 3.1.2025, 4:58