當沒有打開選項卡時,我想將小部件設定為選項卡小部件的背景小部件。我希望它能以這種方式作業:
- 最初標簽小部件中沒有標簽,我想添加一個小部件作為標簽小部件的背景,背景小部件會顯示一些提示文本作為占位符。
- 當用戶打開任何選項卡時,背景將自動隱藏,并且背景小部件不會處理任何用戶事件(單擊、雙擊、鍵盤事件)。
- 關閉所有選項卡后,背景再次顯示。
有任何想法嗎?謝謝。
uj5u.com熱心網友回復:
[移自評論]
根據您概述的要求,聽起來好像您真的不需要單獨的小部件。像下面這樣的東西就足夠了......
#include <QApplication>
#include <QLabel>
#include <QPainter>
#include <QTabWidget>
namespace {
class tab_widget: public QTabWidget {
using super = QTabWidget;
public:
explicit tab_widget (QWidget *parent = nullptr)
: super(parent)
{}
protected:
virtual void paintEvent (QPaintEvent *event) override
{
super::paintEvent(event);
if (!count()) {
QPainter painter(this);
painter.drawText(rect(), Qt::AlignCenter, "Some informative text goes here...");
}
}
};
}
int
main (int argc, char **argv)
{
QApplication app(argc, argv);
tab_widget w;
for (int i = 0; i < 5; i) {
auto text = QString("Tab %1").arg(i);
w.addTab(new QLabel(text), text);
}
w.show();
return app.exec();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/505336.html