无法显示QT5自定义QWidget
我使用QT添加了四个播放窗口,每个窗口都有一个右键单击菜单, 我想要效果: 代码: 但当我用自定义小部件替换小部件时,它不会显示:无法显示QT5自定义QWidget,qt,qt5,Qt,Qt5,我使用QT添加了四个播放窗口,每个窗口都有一个右键单击菜单, 我想要效果: 代码: 但当我用自定义小部件替换小部件时,它不会显示: Video_play::Video_play(QWidget *parent) : QWidget(parent) { this->init(); } void Video_play::init() { Act_stop=new QAction(tr("停止预览"),this); Act_preview=new
Video_play::Video_play(QWidget *parent) : QWidget(parent)
{
this->init();
}
void Video_play::init()
{
Act_stop=new QAction(tr("停止预览"),this);
Act_preview=new QAction(tr("预览"),this);
Act_cut1=new QAction(tr("全屏"),this);
Act_cut4=new QAction(tr("切换4画面"),this);
Act_cut8=new QAction(tr("切换8画面"),this);
Act_cut16=new QAction(tr("切换16画面"),this);
connect(Act_stop, SIGNAL(triggered()), this, SLOT(stop_preview()));
connect(Act_preview, SIGNAL(triggered()), this, SLOT(action_preview()));
connect(Act_cut1, SIGNAL(triggered()), this, SLOT(cut_1()));
connect(Act_cut4, SIGNAL(triggered()), this, SLOT(cut_4()));
connect(Act_cut8, SIGNAL(triggered()), this, SLOT(cut_8()));
connect(Act_cut16, SIGNAL(triggered()), this, SLOT(cut_16()));
this->setStyleSheet("QMenu {background-color:rgba(255,255,255,1);border:1px solid rgba(82,130,164,1);}QMenu::item:selected {background:rgba(82,130,164,1);border:1px solid rgba(82,130,164,1);}");
}
void Video_play::contextMenuEvent(QContextMenuEvent *event)
{
QCursor cur=this->cursor();
QMenu *menu=new QMenu(this);
menu->addAction(Act_preview);
menu->addAction(Act_stop);
menu->addAction(Act_cut1);
menu->addAction(Act_cut4);
menu->addAction(Act_cut8);
menu->addAction(Act_cut16);
menu->exec(cur.pos());
}
但是:
自定义小部件添加了以下方法来解决此问题
void CustomWidget::paintEvent(QPaintEvent *)
{
QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
请回答您的问题:1)标题:Qt5自定义宽度“小部件”或“宽度”?(我不确定)2)请试着用文字描述你的问题。3.)我嵌入了这些图像(出于安全原因,禁止初学者使用),但它们看起来都与我一样,并没有帮助我澄清您的意图。(你可能在上传的时候有点混淆。)旁注:如果你只使用英语,那会有帮助。
void CustomWidget::paintEvent(QPaintEvent *)
{
QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}