Russian Qt Forum
Сентябрь 28, 2024, 20:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос про QDockWidget  (Прочитано 7768 раз)
Mityai
Гость
« : Май 28, 2010, 11:55 »

Доброго времени суток!

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

Спасибо.
Записан
spectre71
Гость
« Ответ #1 : Май 28, 2010, 12:58 »

Доброго времени суток!

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

Спасибо.

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

Записан
crossly
Гость
« Ответ #2 : Май 28, 2010, 13:00 »

+1
Записан
Mityai
Гость
« Ответ #3 : Май 28, 2010, 19:48 »

Если я выложу пару скриншотов, это поможет?
Записан
spectre71
Гость
« Ответ #4 : Май 28, 2010, 20:37 »

Если я выложу пару скриншотов, это поможет?

Зависит от тебя.
Давай.
Записан
Mityai
Гость
« Ответ #5 : Июнь 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
Рисунок 2:http://narod.ru/disk/21466236000/%D1%80%D0%B8%D1%81%D1%83%D0%BD%D0%BE%D0%BA2.JPG.html
Записан
spectre71
Гость
« Ответ #6 : Июнь 03, 2010, 10:22 »

Дошли руки наконец описать проблему. Итак, создал приложение с одной формой и добавил в него QDockWidget, используя стандартную добавлялку Qt Creator:

Выложи полный проект(в архиве) здесь, вместе с сообщением.
Смотри ниже под окном набора сообщения "Дополнительные опции..."
Записан
Mityai
Гость
« Ответ #7 : Июнь 03, 2010, 10:33 »

Вот он.
Записан
spectre71
Гость
« Ответ #8 : Июнь 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)
« Последнее редактирование: Июнь 03, 2010, 10:58 от Spectre » Записан
Mityai
Гость
« Ответ #9 : Июнь 03, 2010, 22:21 »

Понял, спасибо большое! Обидно, что вещь не из разряда интуитивно понятных.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.209 секунд. Запросов: 21.