qfiledialog的取消_Qt的Window Close与程序退出

先写下重点

QApplication::quitOnLastWindowClosed

以下是对于QApplication中此属性的解释:

This property holds whether the application implicitly quits when the last window is closed.

The default is true.

If this property is true, the applications quits when the last visible primary window (i.e. window with no parent) is closed.

quitOnLastWindowClosed这个属性决定最后一个window关闭时,程序是否会退出(quick)。此属性的默认值为true。如果为true,程序会在最后一个可视主窗口(比如:一个没有parent的window)关闭时退出。

问题来了

下面是一个例子:

/*mainwindow.cpp*/

#include "mainwindow.h"

#include

#include

#include

MainWindow::MainWindow(QWidget *parent)

: QMainWindow(parent)

{

QPushButton *button = new QPushButton();

button->setText("Click to open file-dialog");

connect(button, &QPushButton::clicked, [=]{ </

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt Creator 多线程读取文件程序显示 利用QT Creator多任务读取一个文档到程序里 为了防止直接读取文件里的内容太大而发生卡顿,于是多线程读取将更高效的解决这个问题。 效果图如下: 其中pro文件无需改动,默认就好,头文件h里面的内容为 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MyObj; class MyObj : public QObject { Q_OBJECT public: MyObj(); //新的线程 signals: void toLine(QString line); private slots: void doWork(); }; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void appendText(QString); //定义一个槽 private: Ui::MainWindow *ui; QThread *t; MyObj *obj; }; #endif // MAINWINDOW_H 而MAIN主文件的内容为了防止中文乱码做了如下修改: #include "mainwindow.h" #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv); //设置中文字体 防止乱码 a.setFont(QFont("Microsoft Yahei", 9)); //设置中文编码 #if (QT_VERSION <= QT_VERSION_CHECK(5,0,0)) #if _MSC_VER QTextCodec *codec = QTextCodec::codecForName("GBK"); #else QTextCodec *codec = QTextCodec::codecForName("UTF-8"); #endif QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForTr(codec); #else QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForLocale(codec); #endif MainWindow w; w.show(); return a.exec(); } 接下来重点来了,源文件CPP里为 #include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); t = new QThread(); //QThread obj = new MyObj(); obj->moveToThread(t); qDebug()<<"main thread:"<<QThread::currentThread(); connect(t,SIGNAL(started()), obj, SLOT(doWork())); connect(obj,SIGNAL
Qt6对话框QFileDialog是用于在Qt6应用程序中打开和保存文件的对话框。根据引用[1]和引用的内容,我们可以使用以下两种方式来实现对话框的使用: 方式一:使用静态函数QFileDialog::getOpenFileName() 可以通过以下代码示例使用静态函数QFileDialog::getOpenFileName()来实现: ```cpp QString fileName = QFileDialog::getOpenFileName(this, tr("文件打开对话框"), "D:", tr("图片文件(*png *jpg)")); ``` 在这个示例中,我们通过调用静态函数QFileDialog::getOpenFileName()来实现文件的打开对话框。通过传递窗口的指针、对话框的标题、默认目录和文件过滤器等参数,我们可以获取用户选择的文件名。 方式二:创建QFileDialog对象来实现 可以通过以下代码示例创建QFileDialog对象来实现: ```cpp QFileDialog *filedialog = new QFileDialog(this);//创建文件对话框对象,父对象为this filedialog->setWindowTitle("Save");//设置对话框标题 filedialog->setAcceptMode(QFileDialog::AcceptSave);//设置对话框为保存模式 filedialog->setFileMode(QFileDialog::AnyFile);//设置文件对话框的模式 filedialog->setViewMode(QFileDialog::Detail);//设置文件视图模式为详细模式 filedialog->selectFile("data.txt");//设置初始选中的文件为“data.txt” filedialog->setFilter("*.csv;;*txt;;*.*");//设置文件过滤器 filedialog->selectNameFilter("*.csv");//设置初始选择的文件类型 if (filedialog->exec() == QFileDialog::AcceptSave) { QString path = filedialog->selectedFiles()[0]; QFile file(path); if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { QString filePathToRead = "test.txt";//已存在的文件test.txt QFile readFile(filePathToRead); if (readFile.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream in(&readFile); QTextStream out(&file); out << in.readAll(); readFile.close(); file.close(); } } } ``` 在这个示例中,我们通过创建QFileDialog对象,设置对话框的标题、模式、视图模式、初始选中的文件文件过滤器等属性来实现文件的保存对话框。然后,通过调用exec()函数来显示对话框,并根据用户的选择进行相应的操作。 以上是两种实现Qt6对话框QFileDialog的方式,你可以根据需要选择其中一种方式来在Qt6应用程序中使用QFileDialog

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值