Qt ToolWidget

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));


 

 

你可能感兴趣的:(Qt ToolWidget)