标题:【提问】qt 与单例模式
作者:king_xl
日期:2006-03-15 23:07
内容:
qt到底能不能用单例模式啊,怎么我用了好像连main函数都进不去了呢,编译可通过但运行没反应,tx们过来看一看,需要的话我可以贴代码出来。
#1 [XChinux 03-15 23:30]
何谓“单例”模式?
#2 [king_xl 03-15 23:55]
我把代码贴出来吧,帮我看看。
//头文件 omainframe.h
#ifndef OMAINFRAME_H
#define OMAINFRAME_H
//#include
#include
#include
class QLabel;
class QPushButton;
class OMainFrame : public QDialog
{
Q_OBJECT
private:
OMainFrame( QWidget*parent = 0, const char *name = 0,
bool modal = FALSE, WFlags flags = 0 );
OMainFrame();
public:
~OMainFrame();
private:
static OMainFrame *mainframe;
QPushButton *testBtn;
public:
static OMainFrame *getMainframe();
public slots:
};
#endif // OMAINFRAME_H
//源文件 omainframe.cpp
#include
#include "include/omainframe.h"
OMainFrame * OMainFrame::mainframe = new OMainFrame( 0, "optface", FALSE , 0x00001000);
OMainFrame::OMainFrame( QWidget *parent, const char *name, bool modal, WFlags flags )
: QDialog( parent, name, modal, flags )
{
testBtn = new QPushButton(this);
connect(testBtn, SIGNAL(clicked()), this, SLOT(close()));
}
OMainFrame::~OMainFrame()
{
}
OMainFrame *OMainFrame::getMainframe()
{
return OMainFrame::mainframe;
}
//main.cpp
#include
#include "include/omainframe.h"
#include
#include
int main( int argc, char **argv )
{
QApplication a(argc,argv);
a.setDefaultCodec( QTextCodec::codecForName("GBK") );
OMainFrame *h = OMainFrame::getMainframe();
//OMainFrame *h = new OMainFrame;
a.setMainWidget( h );
QObject::connect( h, SIGNAL(lastWindowClosed()), &a, SLOT(quit()) );
h->show();
return a.exec();
}
能编译通过,但运行不了,好像连main函数都没进
#3 [wylhistory 03-16 00:24]
不知道,介意,可以用gdb 跟踪一下,看到了什么地方,只要编译通过了应该很好查出问题,断点+print+where+up
#4 [king_xl 03-16 00:44]
我用vc调试,根本就进不去main函数里,不知道为什么
#5 [giscn 03-17 12:27]
qt 4 solutions有single app的实现方案,