QWidget 设置
Widget w; w.resize(250, 150); w.setWindowTitle("一个简单的例子"); w.setToolTip("这是一个 qt 程序"); w.setWindowIcon(QIcon(":/resources/icon.jpg")); w.show();
使用 Qt 中的标准图标
注意,需要包含 QStyle!
QStyle* style = a.style(); w.setWindowIcon(style->standardIcon(QStyle::SP_DesktopIcon));
QFrame 和 QGridLayout 设置
Widget::Widget(QWidget *parent) : QWidget(parent) { QFrame* frame1 = new QFrame(this); frame1->setFrameStyle(QFrame::Box); frame1->setCursor(Qt::SizeAllCursor); QFrame* frame2 = new QFrame(this); frame2->setFrameStyle(QFrame::Box); frame2->setCursor(Qt::WaitCursor); QFrame* frame3 = new QFrame(this); frame3->setFrameStyle(QFrame::Box); frame3->setCursor(Qt::PointingHandCursor); QGridLayout* grid1 = new QGridLayout(this); setLayout(grid1); grid1->addWidget(frame1, 0, 0, 1, 1); grid1->addWidget(frame2, 0, 1, 1, 1); grid1->addWidget(frame3, 0, 2, 1, 1); QPushButton* button = new QPushButton("quit", this); connect(button, &QPushButton::clicked, qApp, &QApplication::quit); QGridLayout* grid2 = new QGridLayout(frame2); grid2->addWidget(button); QSpinBox* spinbox = new QSpinBox(this); grid2->addWidget(spinbox); }
qss 设置样式
qss 选择器
- * 所有组件
- QPushButton 类选择器
- QPushButton[flat=”false”] 属性选择器
- . QPushButton 非子类选择器
- QPushButton#btnOk ID 选择器
- QDialog QPushButton 从属选择器
- QDialog>QPushButton 子类选择器
qss 案例
QWidget{ background-color:rgb(79, 79, 79); color:rgb(235, 235, 235); font:15px arial,sans-serif; } QSpinBox::down-button{ image:url(:/resources/down.png); width: 25%; } QSpinBox::up-button{ image:url(:/resources/up.png); width: 25%; } QPushButton{ min-width: 60px; min-height: 60px; padding: 0px 10px 0px 10 px; border: 2px groove red; border-radius: 30px; } QPushButton:hover{ background-color: black; color:yellow; }
导入外部 qss 文件
QFile file(":/resources/style.qss"); file.open(QIODevice::ReadOnly); QString styleString = QString::fromLatin1(file.readAll()); w.setStyleSheet(styleString);
使用按照名称链接的槽
- 右键 -> Go to slot
设置无边框和透明背景
setWindowFlag(Qt::FramelessWindowHint); setAttribute(Qt::WA_TranslucentBackground, true);
窗口拖拽案例
void Widget::mousePressEvent(QMouseEvent *event) { // 鼠标全局坐标 QPoint mouseInGlobalPos = event->globalPosition().toPoint(); // 窗口全局坐标 QPoint winInGlobalPos = this->pos(); // 鼠标在窗口中的坐标 mouseInWinPos = mouseInGlobalPos - winInGlobalPos; } void Widget::mouseMoveEvent(QMouseEvent *event) { // 鼠标全局坐标 QPoint mouseInGlobalPos = event->globalPosition().toPoint(); // 计算窗口新的全局坐标 QPoint winInGlobalPos = mouseInGlobalPos - mouseInWinPos; // 按照窗口全局坐标移动 this->move(winInGlobalPos); }