我的画板效果演示 https://blog.csdn.net/afeiererer/article/details/83614697
带菜单的按钮
QMenu *menu_paste = new QMenu;
QAction *click_paste = new QAction(u8"粘贴", this);
QAction *click_paste_from = new QAction(u8"粘贴来源", this);
menu_paste->addAction(click_paste);
menu_paste->addAction(click_paste_from);
ui.pushButton->setMenu(menu_paste);
ps:不要箭头。
pushButton->setStyleSheet("QPushButton::menu-indicator{image:none}");
改变按钮颜色
如果不是要改变颜色,只是要个背景色,设置下StyleSheet就好。
ui.btn_colorview_1->setStyleSheet("QToolButton{background-color:Qt::red}");
排坑:but 这个方式不能传变量,我曾像下面这么写,傻傻的错了。
// ! ! ! 错 误 写 法 运行不会报错,但会是黑色
QColor b = Qcolor(255,255,255);
ui.btn_colorview_1->setStyleSheet("QToolButton{background-color:b}");
下面是改颜色的正确写法 。 注意:千万不能设置background-color,否则要的颜色显现不出来。
//颜色列表
QColor color_list[24] = { QColor(0,0,0), QColor(127, 127, 127),QColor(85, 0, 0),QColor(255, 0, 0)};
void QtGuiApplication1::updata_colorview()
{
ui.btn_colorview_2->setAutoFillBackground(true);
ui.btn_colorview_2-> setPalette(QPalette(color));
/* 与上面那行等价
QPalette p = ui.btn_colorview_2->palette();
p.setColor(QPalette::Button, color);
ui.btn_colorview_2->setPalette(p)*/
paintbox->setbcolor(color);
}
void QtGuiApplication1::on_btn_color_1_clicked()
{
color = color_list[0];
updata_colorview();
}
void QtGuiApplication1::on_btn_color_2_clicked()
{
color = color_list[1];
updata_colorview();
}
不知道为什么必须每次要写这个,全局设置一次是不行的。
ui.btn_colorview_2->setAutoFillBackground(true);
而且我不知道为什么这样按按钮切换是好使的,但是用作初始化就不好使,于是初始是父容器的背景色。未解决。
按钮点击事件
假如按钮的 id是 btn_tool1 :
void QtGuiApplication1::on_btn_tool1_clicked()
{
//.......
}