2

我想创建没有背景的 QWidget;我想给它添加一个透明的 QFrame。这是我的代码:

QWidget  *change_impl_win = new QWidget();
QHBoxLayout *mainLayout = new QHBoxLayout(change_impl_win);
QVBoxLayout *vbox_l = new QVBoxLayout();

QFrame *back_frame = new QFrame();
back_frame->setBackgroundColor(QColor(125, 125, 125, 125));
QHBoxLayout *frame_hbox = new QHBoxLayout(back_frame);
frame_hbox->addLayout(vbox_l);

mainLayout->addWidget(back_frame);

QGroupBox *newImplant = new QGroupBox("");
QGridLayout *layoutNewImplant = new QGridLayout;
newImplant->setLayout(layoutNewImplant);
vbox_l->addWidget(newImplant);

QRadioButton *cb_ob_rb = new QRadioButton("Up", change_impl_win);
QRadioButton *cb_un_rb = new QRadioButton("Down", change_impl_win);

layoutNewImplant->addWidget(cb_ob_rb);
layoutNewImplant->addWidget(cb_un_rb);

QLabel* lengthLabel = new QLabel("Length:");
QSpinBox *cb_implantLength = new QSpinBox;
cb_implantLength->setRange(1, 20);
cb_implantLength->setSingleStep(1);
cb_implantLength->setSuffix("  mm");

layoutNewImplant->addWidget(lengthLabel, 2, 0);
layoutNewImplant->addWidget(cb_implantLength, 2, 1);

QLabel* diameterLabel = new QLabel("Diameter:");
QSpinBox *cb_implantDiameter = new QSpinBox;
cb_implantDiameter->setRange(1, 20);
cb_implantDiameter->setSingleStep(1);
cb_implantDiameter->setSuffix("  mm");

layoutNewImplant->addWidget(diameterLabel, 3, 0);
layoutNewImplant->addWidget(cb_implantDiameter, 3, 1);

QPushButton *cb_apply_prop  = new QPushButton();
cb_apply_prop->setText("Apply");               
cb_apply_prop->setGeometry(400, 0, 200, 40); 
cb_apply_prop->setFont(QFont("Charter",13));
cb_apply_prop->setAutoFillBackground(true);

frame_hbox->addWidget(cb_apply_prop);

change_impl_win->setAttribute(Qt::WA_TranslucentBackground);
change_impl_win->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);

change_impl_win->show();

但是,我看不到透明的 QFrame。我只看到添加到 QWidget 的控件没有背景。请告诉我我在哪里做错了。谢谢你。

4

0 回答 0