crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
barabaka
  опции профиля:
сообщение 10.12.2011, 23:37
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 40
Регистрация: 14.11.2011
Из: Санкт-Петербург
Пользователь №: 2999

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




Репутация:   2  


Есть 2 класса, у которых имеется общий родитель,даже 2

LoginDialog:

#include <QtGui>
#include <QDialog>
#include "dbwork.h"
#include "purchasedialog.h"

namespace Ui {
    class LoginDialog;
}

class LoginDialog : public QDialog,public DbWork
{
    Q_OBJECT

public:
    explicit LoginDialog(QWidget *parent = 0);
    ~LoginDialog();

private slots:
    void on_pushButton_clicked();

private:
    Ui::LoginDialog *ui;
    PurchaseDialog *purchDlg;  // первый вариант
    [вариант 2: PurchaseDialog purchDlg;]
};


PurchaseDialog:

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

namespace Ui {
    class PurchaseDialog;
}

class PurchaseDialog : public QDialog,public DbWork
{
    Q_OBJECT

public:
    explicit PurchaseDialog(QWidget *parent = 0);
    ~PurchaseDialog();

private slots:
    void on_pushButton_clicked();

private:
    Ui::PurchaseDialog *ui;
};


LoginDialog является основным виджетом.
В первом варианте в конструкторе первого диалога я создаю диалог purchDlg=new PurchaseDialog(this). В этом случае второй диалог получает ссылку на родителя и может им управлять.
Во втором варианте я пытаюсь назначить родителя(опять же в конструкторе) с помощью purchDlg.setParent(this) ,но вместо этого в родительском диалоге перестают работать виджеты,и второй диалог не открывается. Почему это происходит? Во втором случае для диалога не устанавливается родительского виджета

Сообщение отредактировал barabaka - 10.12.2011, 23:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 11.12.2011, 8:30
Сообщение #2


Активный участник
***

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

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




Репутация:   3  


Попробуйте после
purchDlg.setParent(this);

вызвать
purchDlg.show();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
barabaka
  опции профиля:
сообщение 11.12.2011, 15:43
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 40
Регистрация: 14.11.2011
Из: Санкт-Петербург
Пользователь №: 2999

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




Репутация:   2  


Диалог не вызывается.Элементы родителя не работают.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 16.4.2025, 13:08