我有一個繼承自qframe的類,“darksheetstyle”qss檔案是:
/* (dot) .QFrame fix #141, #126, #123 */
.QFrame {
border-radius: 4px;
border: 1px solid #455364;
/* No frame */
/* HLine */
/* HLine */
}
.QFrame[frameShape="0"] {
border-radius: 4px;
border: 1px transparent #455364;
}
.QFrame[frameShape="4"] {
max-height: 2px;
border: none;
background-color: #455364;
}
.QFrame[frameShape="5"] {
max-width: 2px;
border: none;
background-color: #455364;
}
QFrame 沒有邊框,所以我在同一個 qss 檔案中撰寫了我的類 qss:
BorderFrame {
border-radius: 4px;
border: 2px solid #455364;
/* No frame */
/* HLine */
/* HLine */
}
cpp代碼是:
class ULTRA_PLOT_EXPORT BorderedFrame : public QFrame
{
Q_OBJECT
public:
explicit BorderedFrame(QWidget* parent) : QFrame(parent)
{
setParent(parent);
}
~BorderedFrame() override = default;
BorderedFrame(const BorderedFrame&) = delete;
BorderedFrame& operator=(const BorderedFrame&) = delete;
BorderedFrame(BorderedFrame&&) = delete;
BorderedFrame& operator=(BorderedFrame&&) = delete;
void paintEvent(QPaintEvent* event) override
{
QStyleOption opt;
opt.initFrom(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);//繪制樣式
}
};
那么,我自己的QFrame類還是沒有邊框,怎么解決呢?
uj5u.com熱心網友回復:
這對我來說按預期作業:
#include <QtWidgets>
class BorderedFrame : public QFrame
{
Q_OBJECT
public:
using QFrame::QFrame;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
app.setStyleSheet("BorderedFrame { border-radius: 4px; border: 2px solid #ff0000; }");
BorderedFrame w;
w.show();
return app.exec();
}
#include "main.moc"
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/443301.html
標籤:C qt 班级 遗产 qtstylesheets
