大家好,又见面了,我是你们的朋友全栈君。
QT是一个跨平台应用程序和UI开发框架。具体的安装以及源文件的下载这里不详细介绍。 要在QT界面上添加一个按钮,可以有两种方法:一个是直接拖放一个按钮即可;另一种则是通过程序来添加一种按钮。
QT提供的信号和槽机制,可以让任意两个对象之间进行消息处理,其作用就是让一个对象产生的信号能够被另一个对象接受并处理。QT基本所有的对象都集成在QObject对象中,在这个对象中有一个静态函数connect(..), 该函数可以让一个对象产生的信号能够被另一个对象接受并处理。 QObject::connect(&button, SIGNAL(clicked()), &w, SLOT(close())); 前面两个参数称为信号,后两个参数称为槽。经过这样的连接后,按钮button的clicked函数和窗口对象w的close()函数就进行了绑定,调用button的clicked()函数就相当于调用了窗口w的close()函数。 好处:可以讲两个独立的模块通过第三方连接起来,降低设计的耦合性。
标准对话框 所谓标准对话框,是 Qt 内置的一系列对话框,用于简化开发。事实上,有很多对话框都是通用的,比如打开文件、设置颜色、打印设置等。这些对话框在所有程序中几乎相同,因此没有必要在每一个程序中都自己实现这么一个对话框。 Qt 的内置对话框大致分为以下几类: QColorDialog: 选择颜色; QFileDialog: 选择文件或者目录; QFontDialog: 选择字体; QInputDialog: 允许用户输入一个值,并将其值返回; QMessageBox: 模态对话框,用于显示信息、询问问题等; QPageSetupDialog: 为打印机提供纸张相关的选项; QPrintDialog: 打印机配置; QPrintPreviewDialog:打印预览; QProgressDialog: 显示操作过程。
widget.h
代码语言:javascript复制#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QProcess>
#include <QDebug>
#include <QMessageBox> //下面三个是添加的
namespace Ui {
class Widget;
}
class Widget : public QWidget //继承
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_commitButton_clicked();
void cancelButtonSlot();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp
代码语言:javascript复制#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget)
{
// this->setMaximumSize(350,150);
// this->setMinimumSize(350,150); //指定窗口大小
ui->setupUi(this);
connect(ui->cmdLineEdit, SIGNAL(returnPressed()), this, SLOT(on_commitButton_clicked())); //通过宏实现信号和槽的连接
connect(ui->cancelButton, &QPushButton::clicked, this, &Widget::cancelButtonSlot);
connect(ui->browseButton, &QPushButton::clicked,
[this]()
{
qDebug() << "helloworld";
QMessageBox::warning(this, "按钮提示", "按钮被按下"); //会为这个对话框提供一个黄色叹号图标
}); //Lamba表达式
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_commitButton_clicked()
{
QString processName = ui->cmdLineEdit->text(); //获取文本框数据
QProcess *myProcess = new QProcess(this);
myProcess->start(processName);
}
void Widget::cancelButtonSlot()
{
this->close();
}
main.cpp
代码语言:javascript复制#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
主函数一般不变,修改的只是头文件和widget.cpp文件
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145471.html原文链接:https://javaforall.cn