赞
踩
在QT中,浮动窗口也叫做是铆接部件,浮动窗口是一个通过QDockWidget来实现浮动的功能,一般是位于核心部件的周围,可以有多个
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QDockWidget> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); QDockWidget* dockwidget = new QDockWidget("浮动窗口", this); // 把浮动窗口放到当前窗口中 addDockWidget(Qt::BottomDockWidgetArea, dockwidget); } MainWindow::~MainWindow() { delete ui; }
浮动窗口是位于中心部件的周围,可以通过setAllowedAreas来进行设置停靠的位置
可以停靠在左侧,右侧,顶部,底部,或者四个位置均可停靠
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QDockWidget> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); QDockWidget* dockwidget = new QDockWidget("浮动窗口", this); // 设置停靠区域 dockwidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea); } MainWindow::~MainWindow() { delete ui; }
停靠在上
停靠在下
但是不能在左右进行停靠
对话框是一个重要组成部分,在一些不适合在主窗口实现的功能组件可以设置在对话框中,对话框通常是一个顶层窗口,出现在程序的最上层,用于实现短期的任务或者简洁的用户交互,Qt通常用到的内置对话框有,文本对话框,颜色对话框,字体对话框,输入对话框,消息框
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QDialog> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked() { QDialog* dialog = new QDialog(this); dialog->setWindowTitle("新建对话框"); dialog->resize(800, 600); dialog->show(); // 防止内存泄漏 dialog->setAttribute(Qt::WA_DeleteOnClose); }
下面我用一个例子来演示什么是自定义对话框,简单来说就是可以自己定义对话框的相关内容:
首先我们新建一个类,这个类是继承自QDialog类的,接着对于这个类进行自己定义:
#include "dialog.h" #include <QDialog> #include <QLabel> #include <QPushButton> #include <QVBoxLayout> dialog::dialog(QWidget* parent) : QDialog(parent) { // 创建标签、按钮、布局管理器 QLabel* label = new QLabel(this); label->setText("点击按钮即可关闭对话框"); QPushButton* button = new QPushButton(this); button->setText("关闭"); QVBoxLayout* layout = new QVBoxLayout(); this->setLayout(layout); layout->addWidget(label); layout->addWidget(button); connect(button, &QPushButton::clicked, this, &dialog::handle); } void dialog::handle() { this->close(); }
接着即可使用这个类了:
#include "mainwindow.h" #include "ui_mainwindow.h" #include "dialog.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked() { dialog* dia = new dialog(this); dia->resize(800, 600); dia->setAttribute(Qt::WA_DeleteOnClose); dia->show(); }
最终效果为:
此时就可以对于对话框的ui界面进行设置了:
对话框分类是模态对话框和非模态对话框
表示的是显示后无法和父窗口进行交互,是一种阻塞式的对话框,设置属性的方式就是把show换成exec即可
QMessageBox用来显示一个消息,让用户进行选择
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QMessageBox> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); QMessageBox* msgbox = new QMessageBox(this); msgbox->setIcon(QMessageBox::Warning); msgbox->setWindowTitle("这是标题"); msgbox->setText("这是内容"); msgbox->setStandardButtons(QMessageBox::Ok | QMessageBox::Save | QMessageBox::Cancel); msgbox->exec(); } MainWindow::~MainWindow() { delete ui; }
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QFileDialog> #include <QDebug> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked() { QString filePath = QFileDialog::getOpenFileName(this); qDebug() << filePath; } void MainWindow::on_pushButton_2_clicked() { QString filePath = QFileDialog::getSaveFileName(this); qDebug() << filePath; }
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。