我希望能夠畫上我的應用程序窗口的頂部,這樣我可以標註所有與一些額外的診斷信息,類似Firefox中的CSS開發工具的部件疊加(如增加小部件類,樣式,高亮邊框等)。繪圖上的應用程序窗口的頂部
我可以走了widget樹,並提取相關信息,但問題是我怎麼能覆蓋所有與該信息的應用程序的窗口?
的一種方法是重寫我QMainWindow
的漆事件,但是這對所有頂級窗口工作要做。有沒有其他方法可以在QDesktopWidget
上繪畫?或者每個QWidget
的繪畫方法都有鉤子?涉及子類QWidget
本身的任何內容都不適用於標準小部件。
這從我剛纔的問題如下操作:
歡呼 山魈
編輯: 由於梅德我現在已經有一個非常簡單的方法,很容易擴展:
class DiagnosticStyle : public QWindowsVistaStyle
{
Q_OBJECT
public:
typedef QWindowsVistaStyle BaseStyle;
void drawControl(ControlElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const;
};
void DiagnosticStyle::drawControl(ControlElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const
{
BaseStyle::drawControl(element, option, painter, widget);
if (widget && painter) {
// draw a border around the widget
painter->setPen(QColor("red"));
painter->drawRect(widget->rect());
// show the classname of the widget
QBrush translucentBrush(QColor(255,246,240, 100));
painter->fillRect(widget->rect(), translucentBrush);
painter->setPen(QColor("darkblue"));
painter->drawText(widget->rect(), Qt::AlignLeft | Qt::AlignVCenter, widget->metaObject()->className());
}
}
qApp->setStyle(new DiagnosticStyle());
這是一個好主意 - 這將是覆蓋更多有用的'將QStyle :: drawControl()'代替,因爲這使您可以訪問到窗口小部件? – 2011-05-06 13:35:36
原來,這正是我所需要的 - 查看我編輯的帖子 – 2011-05-06 15:35:05