PDA

View Full Version : QDockWidget and QListWidget for widget list (QLable, QTextEdit, ect...)



giorgik
6th June 2012, 10:43
Hi all, I'm a problem: I would use QDockWidget containing a list of widgets like QTextEdit and QList but I do not know how to do.
I wrote this code inside the MainWindow:


QDockWidget *dock = new QDockWidget(tr("Contenitore"), this);
dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
this->addDockWidget(Qt::LeftDockWidgetArea, dock);
QListWidget *listaWid = new QListWidget(dock);

As I continue to put in a list widget QLabels and a QTextEdit?

Thanks for the help

giorgik
6th June 2012, 20:29
I'm wrote


QWidget *widCentrale = new QWidget(this);
QTextEdit *textEdit = new QTextEdit();
QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(textEdit);
widCentrale->setLayout(layout);
this->setCentralWidget(widCentrale);

QDockWidget *dock = new QDockWidget(tr("Contenitore"), this);
dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
this->addDockWidget(Qt::LeftDockWidgetArea, dock);
QVBoxLayout *layoutDockWid = new QVBoxLayout();
QLabel *labelDockWid = new QLabel(tr("Una label"));
layoutDockWid->addWidget(labelDockWid);
QTextEdit *textEditDockWid = new QTextEdit();
layoutDockWid->addWidget(textEditDockWid);
dock->setLayout(layoutDockWid);

What is missing in the code to display layoutDockWid and then into the column labelDockWid and textEditDockWid ?

ChrisW67
7th June 2012, 04:03
You will be seeing warnings about setting a layout on a widget that already has one.

You set the content of a QDockWidget as a single widget using QDockWidget::setWidget(). You need to wrap your QDockWidget content in a QWidget with its layout and then set that on the dock widget.

giorgik
7th June 2012, 11:37
Thanks ChrisW67 for your advice :) I solved it:


#include "mainwindow.h"
#include <QtGui/QWidget>
#include <QtGui/QVBoxLayout>
#include <QtGui/QDockWidget>
#include <QtGui/QLabel>
#include <QtGui/QTextEdit>


MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
QWidget *widCentrale = new QWidget(this);
QTextEdit *textEdit = new QTextEdit();
QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(textEdit);
widCentrale->setLayout(layout);
this->setCentralWidget(widCentrale);

QDockWidget *dock = new QDockWidget(tr("Contenitore"), this);
dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
this->addDockWidget(Qt::LeftDockWidgetArea, dock);
dock->setFeatures(QDockWidget::NoDockWidgetFeatures); // thus blocking dock widget area

// container QWidget to put QVBoxLayout containing QLabel and QTextEdit
QWidget *widDockWid = new QWidget(dock);
QVBoxLayout *layoutDockWid = new QVBoxLayout();
QLabel *labelDockWid = new QLabel(tr("Una label"));
layoutDockWid->addWidget(labelDockWid);
QTextEdit *textEditDockWid = new QTextEdit();
layoutDockWid->addWidget(textEditDockWid);
widDockWid->setLayout(layoutDockWid);
dock->setWidget(widDockWid);
}