Russian Qt Forum

Qt => Общие вопросы => Тема начата: Mityai от Май 28, 2010, 11:55



Название: Вопрос про QDockWidget
Отправлено: Mityai от Май 28, 2010, 11:55
Доброго времени суток!

Собственно вопрос - обычное QMainWindow, если 2 раза кликнуть на его меню (верхнюю строку) окна, разворачивается или остается прежним, если развертка запрещена. Каюсь, для разворачиваемого QDockWidget не пробовал, а вот для виджета постоянного размера происходит что-то странное - он вроде как и закрывается - рамка окна исчезает, но содержимое остается висеть на экране, а в трее остается незакрываемая до прикрытия всего приложения вкладка с этим виджетом. Пробовал по CloseEvent отловить этот дабл клик, не ловит. Камрады, расскажите, пожалуйста, что за зверь?

Спасибо.


Название: Re: Вопрос про QDockWidget
Отправлено: spectre71 от Май 28, 2010, 12:58
Доброго времени суток!

Собственно вопрос - обычное QMainWindow, если 2 раза кликнуть на его меню (верхнюю строку) окна, разворачивается или остается прежним, если развертка запрещена. Каюсь, для разворачиваемого QDockWidget не пробовал, а вот для виджета постоянного размера происходит что-то странное - он вроде как и закрывается - рамка окна исчезает, но содержимое остается висеть на экране, а в трее остается незакрываемая до прикрытия всего приложения вкладка с этим виджетом. Пробовал по CloseEvent отловить этот дабл клик, не ловит. Камрады, расскажите, пожалуйста, что за зверь?

Спасибо.

Не уверен что кто-нибудь поймет о чем здесь речь.



Название: Re: Вопрос про QDockWidget
Отправлено: crossly от Май 28, 2010, 13:00
+1


Название: Re: Вопрос про QDockWidget
Отправлено: Mityai от Май 28, 2010, 19:48
Если я выложу пару скриншотов, это поможет?


Название: Re: Вопрос про QDockWidget
Отправлено: spectre71 от Май 28, 2010, 20:37
Если я выложу пару скриншотов, это поможет?

Зависит от тебя.
Давай.


Название: Re: Вопрос про QDockWidget
Отправлено: Mityai от Июнь 03, 2010, 10:06
Дошли руки наконец описать проблему. Итак, создал приложение с одной формой и добавил в него QDockWidget, используя стандартную добавлялку Qt Creator:

mainwindow.h:
Код:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui/QMainWindow>
#include "dockwidget.h"

namespace Ui
{
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

    DockWidget widget;

    bool boolean;

private slots:
    void on_pushButton_clicked();
};

#endif // MAINWINDOW_H

mainwindow.cpp:
Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    boolean = false;
}

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

void MainWindow::on_pushButton_clicked()
{
    if (!boolean)
    {
        widget.show();
        boolean = true;
    }
    else
    {
        widget.hide();
        boolean = false;
    }
}

dockwidget.h:
Код:
#ifndef DOCKWIDGET_H
#define DOCKWIDGET_H

#include <QtGui/QDockWidget>

namespace Ui
{
    class DockWidget;
}

class DockWidget : public QDockWidget {
    Q_OBJECT
public:
    DockWidget(QWidget *parent = 0);
    ~DockWidget();

private:
    Ui::DockWidget *m_ui;
};

#endif // DOCKWIDGET_H

dockwidget.cpp:
Код:
#include "dockwidget.h"
#include "ui_dockwidget.h"

DockWidget::DockWidget(QWidget *parent) :
    QDockWidget(parent),
    m_ui(new Ui::DockWidget)
{
    m_ui->setupUi(this);
}

DockWidget::~DockWidget()
{
    delete m_ui;
}

Сразу оговорюсь - описанная ситуация не зависит от изменяемости размера виджета, хотя при описании темы я думал иначе. При запуске все нормально, но если 2 раза ткнуть на область, выделенную на рисунке 1 красным, получается ситуация как на рисунке 2. Спасибо.

Рисунок 1:http://narod.ru/disk/21466118000/%D1%80%D0%B8%D1%81%D1%83%D0%BD%D0%BE%D0%BA1.JPG.html (http://narod.ru/disk/21466118000/%D1%80%D0%B8%D1%81%D1%83%D0%BD%D0%BE%D0%BA1.JPG.html)
Рисунок 2:http://narod.ru/disk/21466236000/%D1%80%D0%B8%D1%81%D1%83%D0%BD%D0%BE%D0%BA2.JPG.html (http://narod.ru/disk/21466236000/%D1%80%D0%B8%D1%81%D1%83%D0%BD%D0%BE%D0%BA2.JPG.html)


Название: Re: Вопрос про QDockWidget
Отправлено: spectre71 от Июнь 03, 2010, 10:22
Дошли руки наконец описать проблему. Итак, создал приложение с одной формой и добавил в него QDockWidget, используя стандартную добавлялку Qt Creator:

Выложи полный проект(в архиве) здесь, вместе с сообщением.
Смотри ниже под окном набора сообщения "Дополнительные опции..."


Название: Re: Вопрос про QDockWidget
Отправлено: Mityai от Июнь 03, 2010, 10:33
Вот он.


Название: Re: Вопрос про QDockWidget
Отправлено: spectre71 от Июнь 03, 2010, 10:55
Код
C++ (Qt)
private:
   Ui::MainWindow *ui;
 
   DockWidget* widget;
 

Код
C++ (Qt)
MainWindow::MainWindow(QWidget *parent)
   : QMainWindow(parent), ui(new Ui::MainWindow)
{
   ui->setupUi(this);
   widget = new DockWidget(this);
   widget->setVisible(false);
}
 
MainWindow::~MainWindow()
{
   delete ui;
}
 
void MainWindow::on_pushButton_clicked()
{
 widget->setVisible(!widget->isVisible());
}


DockWidget(this)


Название: Re: Вопрос про QDockWidget
Отправлено: Mityai от Июнь 03, 2010, 22:21
Понял, спасибо большое! Обидно, что вещь не из разряда интуитивно понятных.