Здравствуйте, уважаемые!
Извините, что задаю поднимавшийся ранее вот здесь
http://www.prog.org.ru/topic_2457_0.html
вопрос, но к сожалению не смог разобраться.
Есть главное окно приложения и прикрепленный снизу док-виджет
Код окна:
C++ (Qt)
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
//Append CDockWidget
editor = new QTextEdit();
editor->setFont(QFont("Monospace", 10, 1, false));
actionPanel = new CDockWidget("Editor"));
actionPanel->setWidget(editor);
actionPanel->setAllowedAreas(Qt:: BottomDockWidgetArea);
addDockWidget(Qt:: BottomDockWidgetArea, actionPanel);
//Добавление центральной области
workspace = new Workspace();
setCentralWidget(workspace);
}
Код CDockWidget:
C++ (Qt)
#ifndef CDOCKWIDGET_H
#define CDOCKWIDGET_H
#include <QDockWidget>
#include <QtGui>
class CDockWidget : public QDockWidget
{
public:
CDockWidget(const QString & title, QWidget * parent = 0, Qt::WFlags
flags = 0);
QSize sizeHint();
};
#endif // CDOCKWIDGET_H
и определение:
C++ (Qt)
CDockWidget::CDockWidget(const QString & title, QWidget * parent,
Qt::WFlags flags):QDockWidget(title, parent,
flags)
{
}
QSize CDockWidget::sizeHint()
{
QSize sh = QDockWidget::sizeHint();
sh.setHeight(700);
return sh;
}
Мне нужно, чтобы после запуска приложения размер прикрепляемого окна по вертикали был 700px. Однако этого не происходит. Что не так делаю никак не могу понять, точнее не могу понять почему переопределение sizeHint должно что-то менять, вызов CDockWidget::sizeHint() также ни к чему не приводит.
Нашел такой рабочий пример, решил выложить для таких как я =). Суть в том что sizeHint переопределяем не для наследника QDockWidget а для наследника того класса, что содержится в QDockWidget.
C++ (Qt)
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
workspace = new Workspace();
this->setCentralWidget(workspace);
actionPanel = new QDockWidget("QueUe", this);
editor = new CTextEdit(actionPanel);
editor->setFont(QFont("Monospace", 10, 1, false));
actionPanel->setWidget(editor);
actionPanel->setAllowedAreas(Qt:: BottomDockWidgetArea);
addDockWidget(Qt:: BottomDockWidgetArea, actionPanel);
}
Объявление:
C++ (Qt)
#ifndef CTEXTEDIT_H
#define CTEXTEDIT_H
#include <QTextEdit>
class CTextEdit : public QTextEdit
{
Q_OBJECT
public:
CTextEdit(QWidget *parent = 0);
QSize sizeHint() const;
};
#endif // CTEXTEDIT_H
Реализация:
C++ (Qt)
CTextEdit::CTextEdit(QWidget *parent):QTextEdit(parent)
{
}
QSize CTextEdit:: sizeHint() const
{
return QSize(this->parentWidget()->width(), 700);
}
Так работает. Пример нашел здесь:
http://developer.qt.nokia.com/faq/answer/how_can_i_resize_a_qdockwidget_programatically