Qt::Drawer Problem

Alles rund um die Programmierung mit Qt
Antworten
abenstex
Beiträge: 30
Registriert: 12. September 2006 16:33

Qt::Drawer Problem

Beitrag von abenstex »

Hallo zusammen,

ich entwickle eine Qt-Applikation unter Mac, in der der Benutzer einen QWorkspace hat, in dem er alle möglichen Aktionen durchführen kann. So weit so gut...Nun füge ich dem QWorkspace ein einfaches QWidget mit einem QTextEdit und einem Button hinzu. Sobald der User den Button klickt, soll ein QWidget als Qt::Drawer erscheinen, wie es auf Macs so üblich ist. Es erscheint zwar auch allerdings als Drawer für den QWorkspace und nicht für das QWidget, das im QWorkspace angezeigt wird. Hier ein bisschen Code:

Code: Alles auswählen

//Hier wird das Drawer-Widget erstellt
void NoteWidget::buildDrawer()
{
	m_drawer = new QWidget(this);
	m_categoryBox = new QComboBox(m_drawer);
	m_categoryBox->setMaximumHeight(30);
	m_categoryBox->setAutoFillBackground (true);
	m_categoryBox->setBackgroundRole(QPalette::Window);
	m_categoryBox->setEditable(true);
	m_colorButton = new QPushButton(tr("Color"));
	m_colorButton->setAutoFillBackground (true);
	m_colorButton->setBackgroundRole(QPalette::Window);
	
	QGridLayout *layout = new QGridLayout(m_drawer);
	layout->addWidget(m_categoryBox, 0, 0);
	layout->addWidget(m_colorButton, 0, 1);
	
	fillCategoryBox();
	
	connect(m_categoryBox, SIGNAL(highlighted(const QString&)), this, SLOT(changeColor(const QString&)));
	connect(m_colorButton, SIGNAL(clicked()), this, SLOT(chooseColor()));
	
	m_drawer->hide();
}

Code: Alles auswählen

//Hier wird es angezeigt.
void NoteWidget::showDrawer()
{
	if(m_drawerVisible)
		return;
	
	Qt::WindowFlags flags;
	if(mac)
		flags = Qt::Drawer;
	else
		flags = Qt::Popup;
	//cout << "Flags " << flags << endl;
	m_drawer->setWindowFlags(flags);

	QPoint pos = m_drawer->pos();
    if (pos.x() < 0)
        pos.setX(0);
    if (pos.y() < 0)
        pos.setY(0);
    m_drawer->move(pos);
    m_drawer->show();
	m_drawerVisible = true;
}

Kann mir da jemand weiterhelfen?
Antworten