ToolWidget: 实现QQ右上角的设置、最小化和关闭按键。
单独说这个类有两个原因:
1、setGeometry参数可以是负值。
由于资源的问题,通过布局管理器得到的按键不整齐,所以使用绝对定位,如下:
void ToolWidget::setUILayout() { //图片问题,这里不使用布局,直接 定位 // QHBoxLayout *layout = new QHBoxLayout(); // layout->addWidget(settingButton, 0, Qt::AlignTop); // layout->addWidget(minimizeButton, 0, Qt::AlignTop); // layout->addWidget(closeButton, 0, Qt::AlignTop); // layout->setSpacing(0); // layout->setContentsMargins(0, 0, 0, 0); // this->setLayout(layout); settingButton->setGeometry(0, -2, settingButton->width(), settingButton->height()); minimizeButton->setGeometry(settingButton->width()-1, -1, minimizeButton->width(), minimizeButton->height()); closeButton->setGeometry(settingButton->width()-3 + minimizeButton->width(), -1, closeButton->width(), closeButton->height()); this->setFixedSize(settingButton->width() + minimizeButton->width() + closeButton->width()-4, closeButton->height()-2); }
布局管理器得到的结果:
绝对定位后:
2、QApplication::quit 槽,新写法加接收者错误。
connect(toolWidget, &ToolWidget::close_clicked, &QApplication::quit);//Qt5.1的写法,可以不加接收者,此处加上接收者错误 //connect(toolWidget, SIGNAL(close_clicked()), qApp, SLOT(quit()));//老版本写法, 正确 //以下两种方式错误 //connect(toolWidget, &ToolWidget::close_clicked, qApp, &QApplication::quit); //connect(toolWidget, &ToolWidget::close_clicked, //qApp, static_cast<void (QApplication::*)()>(&QApplication::quit));