Well, here's what I quickly tried to come up with: (there's a lot more code that I had to expose in order to get into QMainWindowPrivate - included below)
QMainWindowPrivate* p = reinterpret_cast<QMainWindowPrivate*>(d_ptr);
p->layout->addWidget(li0->widget());
p->layout->addWidget(li1->widget());
p->layout->addWidget(li2->widget());
QMainWindowPrivate* p = reinterpret_cast<QMainWindowPrivate*>(d_ptr);
QLayoutItem *li0 = p->layout->takeAt(0);
QLayoutItem *li1 = p->layout->takeAt(0);
QLayoutItem *li2 = p->layout->takeAt(0);
p->layout->addWidget(new QPushButton);
p->layout->addWidget(li0->widget());
p->layout->addWidget(li1->widget());
p->layout->addWidget(li2->widget());
To copy to clipboard, switch view to plain text mode
Naturally it doesn't crash right away; probably when it's drawing. Wondering if this is the right way to go. Seems ugly to have to remove the previous items and then re-add them after my pushbutton (but I suppose it must be done that way since no insertWidget method exists). Just wondering if this is the right way to go...
(ugliness included to get this to compile):
#include "C:/Qt/4.1.4/src/gui/widgets/qmainwindowlayout_p.h"
#include "C:/Qt/4.1.4/src/gui/kernel/qwidget_p.h"
class QMainWindowPrivate : public QWidgetPrivate
{
public:
inline QMainWindowPrivate()
: layout(0), toolButtonStyle(Qt::ToolButtonIconOnly)
{ }
QMainWindowLayout *layout;
bool explicitIconSize;
Qt::ToolButtonStyle toolButtonStyle;
void init();
};
#include "C:/Qt/4.1.4/src/gui/widgets/qmainwindowlayout_p.h"
#include "C:/Qt/4.1.4/src/gui/kernel/qwidget_p.h"
class QMainWindowPrivate : public QWidgetPrivate
{
Q_DECLARE_PUBLIC(QMainWindow)
public:
inline QMainWindowPrivate()
: layout(0), toolButtonStyle(Qt::ToolButtonIconOnly)
{ }
QMainWindowLayout *layout;
QSize iconSize;
bool explicitIconSize;
Qt::ToolButtonStyle toolButtonStyle;
void init();
};
To copy to clipboard, switch view to plain text mode
Bookmarks