现在转到Qt这块,很多东西使用起来确实像是到了另一个世界,特别是一些错误起初让人百思不得其解,比如bool类型的全局变量,你如果不先给它初始化一下,后面会出现一些非常莫名其妙的问题,别想当然的认为bool值默认就是false
最近刚好用到了如何对窗体设置圆角,如何设置透明背景,注意这边的透明只影响到窗体的背景,不影响窗体上的控件,还有如何让窗体在屏幕右下角显示,在此做个记录以备后用
setWindowFlags (Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
setAttribute(Qt::WA_TranslucentBackground);
ui->btnBar->setFlat(true);
ui->btnPie->setFlat(true);
// 获取屏幕尺寸
QDesktopWidget* desktop = QApplication::desktop();
QRect deskRect = desktop->availableGeometry();
//移到右下角显示
move(deskRect.width() - this->width(), deskRect.height() - this->height());
上面这段代码放在构造函数中,其中Qt::Tool表示不在任务栏中显示,后面两个是去掉窗体标题栏以及置顶显示
setFlag(true)去掉按钮边框。
下面这段paintEvent则写出了如何对窗体进行圆角及半透明背景设置,其实也很简单 :)
void ****::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QPainterPath path;
path.addRoundRect(this->rect(), 5); //圆角设置
//半透明背景
painter.fillPath(path, QColor(92, 155, 203, 100));
}