Qt CMake显示控制台
我制作了一个应用程序,当我在QtCreator中运行时,一切都进行得很顺利,我的问题是当我生成版本时,我的应用程序会显示一个控制台,为什么会发生这种情况,以及如何避免它 这是我的密码Qt CMake显示控制台,qt,cmake,Qt,Cmake,我制作了一个应用程序,当我在QtCreator中运行时,一切都进行得很顺利,我的问题是当我生成版本时,我的应用程序会显示一个控制台,为什么会发生这种情况,以及如何避免它 这是我的密码 #include "mainwindow.h" #include "./ui_mainwindow.h" #include <QMessageBox> #include <QSqlDatabase> #include <QSqlError>
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlTableModel>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
QSqlDatabase db=QSqlDatabase::addDatabase("QPSQL");
if(!db.isDriverAvailable("QPSQL")){
QMessageBox::critical(this,qApp->applicationName(),db.lastError().text());
return;
}
db.setDatabaseName("covid");
db.setHostName("localhost");
db.setPassword("2311046");
db.setPort(5432);
db.setUserName("postgres");
if(!db.open()){
QMessageBox::critical(this,qApp->applicationName(),db.lastError().text());
return;
}
QMessageBox::information(this,qApp->applicationName(),"Todo bien");
}
MainWindow::~MainWindow()
{
delete ui;
}
在这里,我将显示每次运行.exe时显示的窗口:
这应该很简单。只需添加:
#。。。
设置(上需要CMAKE\U CXX\U标准)
#确保我们在Windows上将可执行文件构建为GUI应用程序,而不是控制台应用程序
设置(CMAKE_WIN32_可执行文件为真)
# ...
作为:
当[WIN32\u EXECUTABLE
]设置为true时,在Windows上链接的可执行文件将使用WinMain()入口点而不仅仅是main()创建。这使其成为GUI可执行文件,而不是控制台应用程序。[…]如果在创建目标时设置了CMAKE_WIN32_可执行变量,则此属性由该变量的值初始化
add_executable(untitled1…
添加一个WIN32
作为第二个参数add_executable(untitled1 WIN32…
),以避免您创建windows控制台应用程序。文档在此处解释了这一点
cmake_minimum_required(VERSION 3.5)
project(untitled1 LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# QtCreator supports the following variables for Android, which are identical to qmake Android variables.
# Check http://doc.qt.io/qt-5/deployment-android.html for more information.
# They need to be set before the find_package(Qt5 ...) call.
#if(ANDROID)
# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
# if (ANDROID_ABI STREQUAL "armeabi-v7a")
# set(ANDROID_EXTRA_LIBS
# ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libcrypto.so
# ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libssl.so)
# endif()
#endif()
find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED)
find_package(Qt5 COMPONENTS Sql REQUIRED)
if(ANDROID)
add_library(untitled1 SHARED
main.cpp
mainwindow.cpp
mainwindow.h
mainwindow.ui
)
else()
add_executable(untitled1
main.cpp
mainwindow.cpp
mainwindow.h
mainwindow.ui
)
endif()
target_link_libraries(untitled1 PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
target_link_libraries(untitled1 PUBLIC Qt${QT_VERSION_MAJOR}::Sql)