crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> QMdiArea. Не понятное поведение
MishaUA
  опции профиля:
сообщение 10.3.2014, 12:23
Сообщение #1


Участник
**

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

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




Репутация:   0  


h:
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    QMdiArea    *ar;
    void contextMenuEvent(QContextMenuEvent* pe) {add();}

public slots:
    void add();
private:
    Ui::MainWindow *ui;
};

cpp:
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ar = new QMdiArea(this);
    setCentralWidget(ar);

    add();

    QTimer    *t    = new QTimer(this);
    connect(t, SIGNAL(timeout()), this, SLOT(add()));
    t->start(100);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::add()
{
    qDebug("add");
    ar->addSubWindow(new QWidget());
}

Алгоритм должен быть такой: При запуске создается Mdi, после чего на него добавляется окно, так же, окно должно создаваться по таймеру и при левом клике, но реально создается только при запуске.
Где мой косяк?
PS: Qt 5.2.1

Сообщение отредактировал MishaUA - 10.3.2014, 12:24
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MishaUA
  опции профиля:
сообщение 10.3.2014, 23:35
Сообщение #2


Участник
**

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

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




Репутация:   0  


Нужно делать так:

    QWidget *child = new QWidget();
    ar->addSubWindow(child);

    child->show();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.3.2014, 4:37
Сообщение #3


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

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

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




Репутация:   94  


Цитата(MishaUA @ 11.3.2014, 1:35) *
 child->show();
к стати говоря, чтобы не было глюков, лучше манипуляции делать через экземпляр QMdiSubwindow, т.е.:

QMdiSubWindow *sub = ar->addSubWindow(child);
sub->show(); // командуем субокну, а не виджету

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 24.10.2019, 7:08