qt基本控件使用

    技术2023-06-10  65

    个人博客地址:http://wtqdreamer.top

    QPushButton使用

    /********QPushButton使用**********/ btn_set = new QPushButton("开始",this); btn_set->setGeometry(QRect(10, 10, 50, 30)); connect(btn_set, SIGNAL(clicked()), this, SLOT(btn_text()));

    QLabel使用

    /********QLabel使用**********/ label_set = new QLabel("LABEL", this); label_set->setGeometry(QRect(60, 10, 70, 30)); //设置label样式 //font-size字体大小、color字体颜色、font-weight字宽、font-style字体样式 label_set->setStyleSheet("font-size:20px;color:red;font-weight:bold;font-style:italic");

    QLineEdit使用

    /********QLineEdit使用**********/ lineedit_set = new QLineEdit(this); lineedit_set->setGeometry(QRect(140, 10, 70, 30)); //样式使用 //border边框线大小、border-style边框样式solid实线、border-color:blue red 上下蓝色 //左右红色 lineedit_set->setStyleSheet("border:10px;border-style:solid;color:red;border-color:blue red;"); //限制最长输入6位 lineedit_set->setMaxLength(6); lineedit_set->setText("12345");//设置显示 //lineedit_set->setEchoMode(QLineEdit::NoEcho);//不可显示,可以输入但是不会显示出来

    QTextEdit使用

    /********QTextEdit使用**********/ textedit_set = new QTextEdit(this); textedit_set -> setGeometry(QRect(220, 10, 70, 50)); textedit_set->setText("第一行<br/>第二行");

    QPlainTextEdit使用

    /********QPlainTextEdit使用**********/ //QPlainTextEdit 可以理解为 QTextEdit的低配版。QPlainTextEdit支持纯文本显示,QTextEdit支持富文本显示。就是多一个样式。 //QPlainTextEdit显示的效率比QTextEdit高,如果需要显示大量文字,尤其是需要滚动条来回滚动的时候,QPlainTextEdit要好很多。 plaintextedit_set = new QPlainTextEdit(this); plaintextedit_set->setGeometry(QRect(300, 10, 100, 50)); plaintextedit_set->setPlainText("第一行\n第二行");

    QComboBox使用

    /********QComboBox使用**********/ combobox_set = new QComboBox(this); combobox_set->setGeometry(QRect(300, 110, 100, 50)); //定义字符串列表 QStringList str; str << "1" <<"2" << "3"; combobox_set->addItems(str); //另一种带图标的方式 //QIcon icon; //icon.addFile(":/images/xxx.ico"); combobox_set->clear(); //清除列表 for (int i = 0; i < 20; i++) //ui->comboBox->addItem(icon, QString::asprintf("Item %d", i)); //带图标 combobox_set->addItem(QString::asprintf("Item %d",i)); //不带图标 combobox_set->clear(); //添加具有用户数据的项 //QMap自动根据 key排序 //这里定义了一个关联容器类 QMap<QString,int> City_Zone,用于存储<城市,区号>映射表。为 City_Zone 填充数据后,给 comboBox2 添加项时,使用了 foreach 关键字遍历 City_Zone.keys() //城市名称作为项显示的字符串,电话区号作为项关联的用户数据,但是在列表框里只能看到城市名称。 //需要注意的是,将 City_Zone 的内容添加到列表框之后,列表框里显示的列表项的顺序与源程序中设置 City_Zone 的顺序不一致,因为 QMap<Key, T> 容器类会自动按照 Key 排序,元素根据key值大小排序 QMap<QString, int> City_Zone; City_Zone.insert("北京", 10); City_Zone.insert("上海", 21); City_Zone.insert("天津", 22); City_Zone.insert("大连", 411); City_Zone.insert("锦州", 416); City_Zone.insert("徐州", 516); City_Zone.insert("福州", 591); City_Zone.insert("青岛", 532); foreach(const QString & str, City_Zone.keys()) combobox_set->addItem(str, City_Zone.value(str));

    访问combobox

    QComboBox列表项的访问 QComboBox 存储的项是一个列表,但是 QComboBox 不提供整个列表用于访问,可以通过索引访问某个项。访问项的一些函数主要有以下几种: int currentlndex():返回当前项的序号,第一个项的序号为0。QString currentText():返回当前项的文字。 QVariant currentData(int role = Qt::UserRole):返回当前项的关联数据,数据的缺省角色为 role = Qt::UserRole,角色的意义在后续章节会详细介绍。QString itemText(int index):返回指定索引号的项的文字。 QVariant itemData(int index, int role = Qt%:UserRole):返回指定索引号的项的关联数据。int count():返回项的个数。 在一个 QComboBox 组件上选择项发生变化时,会发射如下两个信号:

    void currentlndexChanged(int index) //当前ComboBox中的CurrentIndex改变时,不管是交互式还是通过程序改变选项,都会产生一个改变值得消息信号,如果ComboBox为空或重置当前ComboBox,产生的消息值返回-1 void currentlndexChanged(const QString &text) //传送的是选中Item的ItemName

    添加一个响应槽函数void on_combobox_set(QString arg);

    connect(combobox_set, SIGNAL(currentIndexChanged(QString)), this, SLOT(on_combobox_set(QString))); void Test::on_combobox_set(QString arg) { //仅显示项 btn_set->setText(arg); //显示项关联的数据 //QString zone = combobox_set->currentData().toString();//项关联的数据 //btn_set->setText(arg + ":区号=" + zone); }

    QFontComboBox 字体下拉列表框

    connect(btn_set, SIGNAL(released()), this, SLOT(btn_text())); void Test::btn_text() { QString arg; arg = ui.fontcombobox->currentText(); btn_set->setText(arg); }

    QSpinBox和QDoubleSpinBox 控件

    QSpinBox旨在处理整数和离散值集(例如,月份名称) 使用QDoubleSpinBox作为浮点值。 QSpinBox允许用户通过单击上/下按钮或按键盘上的上/下按钮来选择/选择一个值,以增加/减少当前显示的值。用户也可以手动输入值。旋转框支持整数值但可以扩展为使用带有validate(),textFromValue()和valueFromText()的不同字符串。 每次值更改时,QSpinBox都会发出valueChanged()和textChanged()信号,前者提供一个int,后者提供一个QString。在textChanged() 信号提供的值与两个前缀prefix() 和suffix()后缀。可以使用value()获取当前值,并使用setValue()进行设置 单击向上/向下按钮或使用键盘加速器的向上和向下箭头将以singleStep()大小为步长来增大或减小当前值。如果要更改此行为,可以重新实现虚拟功能stepBy()。可以使用构造函数之一来设置最小值和最大值以及步长,以后可以使用setMinimum(),setMaximum()和setSingleStep()对其进行更改

    //值的范围 ui.spinbox->setRange(0, 10); //设置初始值 ui.spinbox->setValue(1); //设置后缀 ui.spinbox->setSuffix("元"); //设置前缀 ui.spinbox->setPrefix("$"); //设置步进值 ui.spinbox->setSingleStep(1); ui.spinbox->setMinimum() #设定最大值 ui.spinbox->setMaximum() #设定最小值 ui.spinbox->setRange(min,max) #设定范围 ui.spinbox->maximum() #获取最大值 ui.spinbox->minimum() #获取最小值 ui.spinbox->setWrapping(True) #启用数值循环 ui.spinbox->wrapping() #是否启用数值循环

    QTimeEdit 时间控件

    timeedit = new QTimeEdit(this); timeedit->setGeometry(QRect(100, 100, 100, 30)); //设置显示格式 timeedit->setDisplayFormat("yyyy/MM/dd hh:mm:ss"); //获取当前系统时间默认只有时分 QDateTime systime = QDateTime::currentDateTime(); //获取时分秒并以':'进行拆分存入list数组 QStringList arg = systime.toString("hh:mm:ss").split(':'); //将时分秒显示到控件 timeedit->setTime(QTime(arg[0].toInt(),arg[1].toInt(),arg[2].toInt()));

    setMinimumTime(const QTime& min)设置最小时间 setMaximumTime(const QTime& max)设置最大时间

    QDateEdit 日期控件

    日期控件与时间控件差不多

    //获取系统时间 QDateTime sysTime = QDateTime::currentDateTime(); //获取时分秒以“-”号拆分赋予 list 数组 QStringList list = sysTime.toString("yyyy-MM-dd").split('-'); //将年月日绑定控件 dateEdit->setDate(QDate(list[0].toInt(),list[1].toInt(),list[2].toInt()));

    同样可以使用setDisplayFormat设置日期格式 最大最小日期也一样

    QScrollBar 滚动条控件

    scrollBar = new QScrollBar(this); spinBox = new QSpinBox(this); //横显/竖显 scrollBar->setOrientation(Qt::Horizontal); //位置 scrollBar->setGeometry(QRect(50, 50, 180, 20)); spinBox->setGeometry(QRect(50, 90, 100, 25)); //控制条宽度 scrollBar->setPageStep(10); //scrollBar 事件 connect(scrollBar, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int))); //spinBox 事件 connect(spinBox, SIGNAL(valueChanged(int)), scrollBar, SLOT(setValue(int))); //初始值 scrollBar->setValue(50);

    QRadioButton 单选按钮

    radiobtnA = new QRadioButton(this); radiobtnB = new QRadioButton(this); radiobtnA->setGeometry(100, 100, 50, 50); radiobtnB->setGeometry(200, 200, 50, 50); radiobtnA->setText("A"); radiobtnB->setText("B"); radiobtnA->setChecked(true);//默认选择,当qt界面出现多个radiobtn时默认只能选择一个 connect(radiobtnA, SIGNAL(clicked()), this, SLOT(btn_text())); connect(radiobtnB, SIGNAL(clicked()), this, SLOT(btn_text())); void Test::btn_text() { if (sender()==radiobtnA) { btn_set->setText("这是A"); } else if (sender() == radiobtnB) { btn_set->setText("这是B"); } }

    QCheckBox 复选框

    .h

    #include<QCheckBox> private: QCheckBox* checkbox1; QCheckBox* checkbox2; QCheckBox* checkbox3; private slots: void change_checkbox_text();

    .c

    checkbox1 = new QCheckBox(this); checkbox2 = new QCheckBox(this); checkbox3 = new QCheckBox(this); checkbox1->setGeometry(QRect(100, 50, 100, 30)); checkbox2->setGeometry(QRect(100, 150, 100, 30)); checkbox3->setGeometry(QRect(100, 250, 100, 30)); checkbox1->setText("A"); checkbox2->setText("B"); checkbox3->setText("C"); connect(checkbox1, SIGNAL(clicked(bool)), this, SLOT(change_checkbox_text())); connect(checkbox2, SIGNAL(clicked(bool)), this, SLOT(change_checkbox_text())); connect(checkbox3, SIGNAL(clicked(bool)), this, SLOT(change_checkbox_text())); void Test::change_checkbox_text() { QString str; //判断复选框的状态 if (sender()== checkbox1) { if (checkbox1->checkState() == Qt::Checked) { str += "AA"; } else { str = str.replace(QString("AA"), QString("")); } } else if (sender()==checkbox2) { if (checkbox2->checkState() == Qt::Checked) { str += "BB"; } else { str = str.replace(QString("BB"), QString("")); } } else if (sender()==checkbox3) { if (checkbox3->checkState() == Qt::Checked) { str += "CC"; } else { str = str.replace(QString("CC"), QString("")); } } //显示不同值 btn_set->setText(str); }

    QListView 列表控件

    QListView可以用来以列表的形式展示数据,在Qt中使用model/View结构来管理数据与视图的关系,model负责数据的存取. QT提供了一些现成的models用于处理数据项: QStringListModel 用于存储简单的QString列表。 QStandardItemModel 管理复杂的树型结构数据项,每项都可以包含任意数据。 QDirModel 提供本地文件系统中的文件与目录信息。 QSqlQueryModel, QSqlTableModel,QSqlRelationTableModel用来访问数据库 下面为一个简单例子: .H

    #include <QListView> //QListView 类 #include <QStringListModel> //数据模型类 private: QListView* listview; QStringListModel* model; private slots: void btn_text();//获取某项值 void show_model(QModelIndex index);//点击某项时显示值

    .C

    listview = new QListView(this); listview->setGeometry(QRect(100, 100, 100, 50)); QStringList str; str << "1" << "2" << "3"; model = new QStringListModel(str); listview->setModel(model); connect(listview, SIGNAL(clicked(QModelIndex)), this, SLOT(show_model(QModelIndex))); void Test::btn_text() { //index()代表几行几列 QString str = listview->model()->index(1, 0).data().toString(); btn_set->setText(str); } void Test::show_model(QModelIndex index) { QString str = index.data().toString(); btn_set->setText(str); }

    如图:

    QTreeView 树控件

    简单应用: .h文件

    #include <QTreeView> #include <QStandardItemModel> private: QTreeView* treeview; QStandardItemModel* standard_item_model; private slots: void show_model(QModelIndex index);

    .c文件

    treeview = new QTreeView(this); treeview->setGeometry(QRect(100, 100, 300, 300)); //实例数据类型 4 个节点,2 列 standard_item_model = new QStandardItemModel(3, 2); //列名称 standard_item_model->setHeaderData(0, Qt::Horizontal, "序号"); standard_item_model->setHeaderData(1, Qt::Horizontal, "列表说明"); //定义节点 QStandardItem* item1 = new QStandardItem("A"); item1->setIcon(QIcon(":/Test/7.png")); QStandardItem* item2 = new QStandardItem("B"); item2->setIcon(QIcon(":/Test/7.png")); QStandardItem* item3 = new QStandardItem("C"); item3->setIcon(QIcon(":/Test/7.png")); QStandardItem* item4 = new QStandardItem("D"); item4->setIcon(QIcon(":/Test/7.png")); item3->appendRow(item4); item3->setChild(0, 1, new QStandardItem(QString("子节点使用"))); //将节点添加至 QStandardItemModel standard_item_model->setItem(0, 0, item1); standard_item_model->setItem(1, 0, item2); standard_item_model->setItem(2, 0, item3); standard_item_model->setItem(0, 1, new QStandardItem(QString("信息说明"))); //将 QStandardItemModel 数据绑定 QTreeView 控件 treeview->setModel(standard_item_model); connect(treeview, SIGNAL(clicked(QModelIndex)), this, SLOT(show_model(QModelIndex))); void Test::show_model(QModelIndex index) { QString str; str += QString("当前选中:%1\nrow:%2,column:%3\n").arg(index.data().toString()) .arg(index.row()).arg(index.column()); str += QString("父级:%1\n").arg(index.parent().data().toString()); label_set->setText(str); }

    for (int i = 0; i < 5; ++i) { QStandardItem* itemgroup = new QStandardItem(QString("组%1").arg(i + 1)); item3->appendRow(itemgroup); for (int j = 0; j < (i + 1); ++j) { QStandardItem* itemchannel = new QStandardItem(QString("频道%1").arg(j + 1)); itemgroup->appendRow(itemchannel); itemgroup->setChild(itemchannel->index().row(), 1, new QStandardItem(QString("频道%1信息说明").arg(j + 1))); } }

    在setModel前添加则可以

    QTableView 表格控件

    .h文件

    #include <QStandardItemModel> #include <QTableView> private: QStandardItemModel* standard_item_model; QTableView* tableview;

    .c文件

    tableview = new QTableView(this); tableview->setGeometry(QRect(200, 100, 500, 300)); standard_item_model = new QStandardItemModel(); //定义列 standard_item_model->setHorizontalHeaderItem(0, new QStandardItem("姓名")); standard_item_model->setHorizontalHeaderItem(1, new QStandardItem("性别")); standard_item_model->setHorizontalHeaderItem(2, new QStandardItem("编号")); //定义行列数据(行号,列号) standard_item_model->setItem(0, 0, new QStandardItem("张三")); standard_item_model->setItem(1, 0, new QStandardItem("李四")); standard_item_model->setItem(2, 0, new QStandardItem("麻五")); //定义行列数据 standard_item_model->setItem(0, 2, new QStandardItem("001")); standard_item_model->setItem(1, 2, new QStandardItem("002")); standard_item_model->setItem(2, 2, new QStandardItem("003")); //将数据模型绑定控件 tableview->setModel(standard_item_model);

    QHBoxLayout 横向布局

    .h

    #include <QHBoxLayout> #include <QWidget> #include<QCheckBox> private: QCheckBox* checkbox1; QCheckBox* checkbox2; QCheckBox* checkbox3; QHBoxLayout* hboxlayout; QWidget* widget;

    .c

    //创建布局及复选框控件 hboxlayout = new QHBoxLayout(); checkbox1 = new QCheckBox("A"); checkbox2 = new QCheckBox("B"); checkbox3 = new QCheckBox("C"); //将复选框控件添加到布局中 hboxlayout->addWidget(checkbox1); hboxlayout->addWidget(checkbox2); hboxlayout->addWidget(checkbox3); hboxlayout->setSpacing(100); //创建个widget并添加布局 widget = new QWidget(); widget->setLayout(hboxlayout); //设置为中心窗口部件 this->setCentralWidget(widget);

    QGridLayout 网格布局

    .h文件

    #include <QWidget> #include <QGridLayout> #include<QPushButton> private: QPushButton* btn_set;//声明按钮 QPushButton* btn_set1; QPushButton* btn_set2; QPushButton* btn_set3; QWidget* widget; QGridLayout* gridlayout;

    .c文件

    //创建布局及按钮控件 gridlayout = new QGridLayout(); btn_set = new QPushButton("A"); btn_set1 = new QPushButton("B"); btn_set2 = new QPushButton("C"); btn_set3 = new QPushButton("D"); //设置组件大小可扩展 btn_set->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); btn_set1->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); btn_set2->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); btn_set3->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); //将按钮控件添加到布局中 gridlayout->addWidget(btn_set, 0, 0, 2, 1);//0,0位置2,1占用几行几列 gridlayout->addWidget(btn_set1, 0, 1, 2, 1); gridlayout->addWidget(btn_set2, 3, 0, 1, 2); gridlayout->addWidget(btn_set3, 3, 1, 1, 2); //设置水平垂直间隔 gridlayout->setSpacing(10); //gridlayout->setHorizontalSpacing(10);//单独设置水平间隔 //gridlayout->setVerticalSpacing(10);//单独设置垂直间隔 //设置外间隔 gridlayout->setContentsMargins(10, 10, 10, 10); //创建个widget并添加布局 widget = new QWidget(); widget->setLayout(gridlayout); //设置为中心窗口部件 this->setCentralWidget(widget);

    QGroupBox 控件

    .h文件

    #include <QGroupBox> #include <QVBoxLayout> #include<QPushButton> private: QPushButton* btn_set;//声明按钮 QPushButton* btn_set1; QPushButton* btn_set2; QPushButton* btn_set3; QGroupBox* groupbox; QVBoxLayout* vboxlayout;

    .c文件

    //创建布局、按钮控件、控件组 vboxlayout = new QVBoxLayout(); groupbox = new QGroupBox(this); btn_set = new QPushButton("A"); btn_set1 = new QPushButton("B"); btn_set2 = new QPushButton("C"); btn_set3 = new QPushButton("D"); //位置 groupbox->setGeometry(QRect(100, 100, 300, 300)); //名字 groupbox->setTitle("test"); //将控件添加到布局 vboxlayout->addWidget(btn_set); vboxlayout->addWidget(btn_set1); vboxlayout->addWidget(btn_set2); vboxlayout->addWidget(btn_set3); //给组设置布局 groupbox->setLayout(vboxlayout);

    QTabWidget 控件

    .h文件

    #include<QTabWidget> private: QTabWidget* tabwidget; //新建tabA类 class tabA:public QWidget { Q_OBJECT public: tabA(QWidget *parent=0); private: }; //新建tabB类 class tabB :public QWidget { Q_OBJECT public: tabB(QWidget* parent = 0); private: };

    .c文件

    tabwidget = new QTabWidget(this); tabwidget->setGeometry(QRect(30, 30, 400, 200)); tabwidget->addTab(new tabA, "A页面"); tabwidget->addTab(new tabB, "B页面"); //新建类主体 tabA::tabA(QWidget* parent) :QWidget(parent) { QPushButton* buttonA = new QPushButton(this); buttonA->setText("页面A"); } tabB::tabB(QWidget* parent) : QWidget(parent) { QPushButton* buttonB = new QPushButton(this); buttonB->setText("页面B"); }

    QMenu、QToolBar 控件

    对于Action动作可以添加到菜单也可以添加到工具条 .h文件

    #include <QMenu> #include <QMenuBar> #include <QAction> #include <QToolBar> private: QMenu* fileMenu, * editMenu, * helpMenu;//三个菜单 QToolBar* fileToolBar, * editToolBar;//两个工具条 QAction* newAct, * cutAct, * copyAct, *pasteAct, * aboutQtAct;//五个动作 private slots: void newFile();//点击新建后触发的槽

    .c文件

    //实例菜单 fileMenu = new QMenu(this); editMenu = new QMenu(this); helpMenu = new QMenu(this); //填充菜单子节点关于Action动作相关设置 newAct = new QAction(tr("新建"), this); //设置显示提示快捷键 newAct->setShortcut(tr("Ctrl+N")); //在窗口底部提示信息 newAct->setStatusTip(tr("新建文件")); //点击新建触发槽 connect(newAct, SIGNAL(triggered()), this, SLOT(newFile())); cutAct = new QAction(tr("剪切"), this); cutAct->setShortcut(tr("Ctrl+X")); cutAct->setStatusTip(tr("剪切内容")); copyAct = new QAction(tr("复制"), this); copyAct->setShortcut(tr("Ctrl+C")); copyAct->setStatusTip(tr("复制内容")); pasteAct = new QAction(tr("粘贴"), this); pasteAct->setShortcut(tr("Ctrl+V")); pasteAct->setStatusTip(tr("粘贴内容")); aboutQtAct = new QAction(tr("关于Qt"), this); aboutQtAct->setStatusTip(tr("关于Qt信息")); connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt())); //填充菜单 fileMenu = menuBar()->addMenu(tr("文件")); fileMenu->addAction(newAct); fileMenu->addSeparator(); editMenu = menuBar()->addMenu(tr("编辑")); editMenu->addAction(cutAct); editMenu->addAction(copyAct); editMenu->addAction(pasteAct); menuBar()->addSeparator(); helpMenu = menuBar()->addMenu(tr("帮助")); helpMenu->addAction(aboutQtAct); //toolbar工具条 fileToolBar = addToolBar(tr("新建")); fileToolBar->addAction(newAct); editToolBar = addToolBar(tr("修改")); editToolBar->addAction(cutAct); editToolBar->addAction(copyAct); editToolBar->addAction(pasteAct); void Test::newFile() { QMessageBox::warning(this, tr("Warning"), tr("创建新文件?"), QMessageBox::Yes | QMessageBox::Default, QMessageBox::No); }

    qt任务栏托盘菜单

    功能最小化到系统托盘,点击关闭关闭窗口,但是系统托盘仍然在; .h

    #include <QSystemTrayIcon>//任务栏类 #include <QMenu>//菜单类 private: QSystemTrayIcon* my_tray_icon; QMenu* my_menu; QAction* restore_winaction; QAction* quit_action; void create_menu(); private slots: void show_normal();

    .c

    //创建菜单 create_menu(); //判断系统是否支持托盘图标 if (!QSystemTrayIcon::isSystemTrayAvailable()) { return; } //实例QSystemTrayIcon my_tray_icon = new QSystemTrayIcon(this); //设置图标 my_tray_icon->setIcon(QIcon(":/Test/7.png")); //鼠标放托盘图标提示信息 my_tray_icon->setToolTip("test软件"); //设置消息 my_tray_icon->showMessage("托盘", "托盘管理", QSystemTrayIcon::Information, 10000); //托盘菜单 my_tray_icon->setContextMenu(my_menu); //显示 my_tray_icon->show(); void Test::create_menu() { restore_winaction = new QAction("恢复(&R)", this); quit_action = new QAction("退出(&Q)", this); //恢复 connect(restore_winaction, SIGNAL(triggered()), this, SLOT(show_normal())); //退出 connect(quit_action, SIGNAL(triggered()), qApp, SLOT(quit())); my_menu = new QMenu((QWidget*)QApplication::desktop()); //添加菜单 my_menu->addAction(restore_winaction); //分隔符 my_menu->addSeparator(); my_menu->addAction(quit_action); } //正常显示 void Test::show_normal() { this->show(); } //重写点击最小化按钮隐藏界面 void QWidget::changeEvent(QEvent* e) { if ((e->type() == QEvent::WindowStateChange) && this->isMaximized()) { //定时器触发 //QTimer::singleShot(100, this, SLOT(hide())); this->hide(); } } //重写点击关闭按钮 void QWidget::closeEvent(QCloseEvent* e) { hide(); e->ignore(); }

    Processed: 0.015, SQL: 9