2013-04-13 63 views
1

我的Qt4应用程序启动后,不会显示为Windows 7和Windows XP任务栏上的图标。我怎样才能让它出现?Qt4应用程序图标不出现在Windows任务栏上

当我最小化我的应用程序时,它会变成左下角的小窗口标题栏。

顺便说一下,我做我的CMakeLists.txt以下,以防止控制台窗口从我的应用程序一起标记:

if(WIN32) 
    add_executable(codequery WIN32 ${CODEQUERY_SRCS} ${CODEQUERY_MOC_SRCS} ${CODEQUERY_RC_SRCS} ${CODEQUERY_UI_HDRS} ${QM}) 
else() 
    add_executable(codequery ${CODEQUERY_SRCS} ${CODEQUERY_MOC_SRCS} ${CODEQUERY_RC_SRCS} ${CODEQUERY_UI_HDRS} ${QM}) 
endif() 

这是我的主要功能:

#include "mainwindow.h" 

int main(int argc, char *argv[]) 
{ 
QApplication app(argc, argv); 
QMainWindow *wndw = new QMainWindow; 
mainwindow mw(wndw, &app); 

mw.show(); 
return app.exec(); 
} 

这里的主窗口的声明的一部分:

namespace Ui { 
    class MainWindow; 
} 

class mainwindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
Ui::MainWindow *ui; 
mainwindow(QMainWindow *parent = NULL, QApplication *app = NULL); 
virtual ~mainwindow(); 

下面是它的构造函数的一部分:

#include "mainwindow.h" 
#include "ui_mainWindow.h" 

mainwindow::mainwindow(QMainWindow *parent, QApplication *app) 
:QMainWindow(parent) 
,m_app(app) 
,ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
} 

GUI部分是使用Qt Designer设计的,它生成为ui_mainWindow.h。

的setupUi部分功能:

void setupUi(QMainWindow *MainWindow) 
{ 
    if (MainWindow->objectName().isEmpty()) 
     MainWindow->setObjectName(QString::fromUtf8("MainWindow")); 
    MainWindow->resize(629, 600); 
    QIcon icon; 
    icon.addFile(QString::fromUtf8(":/mainwindow/images/logo.png"), QSize(), QIcon::Normal, QIcon::Off); 
    MainWindow->setWindowIcon(icon); 
+0

需要更多详细信息!请发布您的问题的最小(自包含,编译)代码示例。 –

+0

好的。更多细节补充。 – ruben2020

+0

你试过setWindowIcon(const QIcon&icon)吗? – IKM2007

回答

1

我找到了!必须添加WS_EX_APPWINDOW。

#ifdef _WIN32 
#include <windows.h> 
#endif 

#include "mainwindow.h" 


int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    QMainWindow *wndw = new QMainWindow; 
    mainwindow mw(wndw, &app); 

    mw.show(); 

#ifdef _WIN32 
    ShowWindow(mw.winId(), SW_HIDE); 
    SetWindowLongPtr(mw.winId(), GWL_EXSTYLE, 
       GetWindowLongPtr(mw.winId(), GWL_EXSTYLE) | WS_EX_APPWINDOW); 
    ShowWindow(mw.winId(), SW_SHOW); 
#endif 

    return app.exec(); 
} 
+0

这对我很有意思。我没有为每个使用Qt/CMake/VisualStudio构建的应用程序设置WS_EX_APPWINDOW或任何其他窗口标志和图标。 – drescherjm

+0

我正在使用Qt/CMake/MinGW。但也可能是因为我没有在Qt Designer中设置一些属性。 – ruben2020

相关问题