PDA

View Full Version : Qt4 with VS2005



bkastel1
5th November 2007, 10:55
Hello all,

this is my first post so I hope I will do it allright. I'm using Qt4 4.3.1 with VS2005.NET and I'm working on a application for configuring a device I made. All widgets are drawn from code. I have two questions. First, i'm getting a warning that sasy:

1>Moc'ing serviscenter.cpp...
1>.\serviscenter.cpp(0): Warning: No relevant classes found. No output generated.

I don't know why I'm getting this warning.

Second, the appliation resize event is veeery slow. So far only widgets are used and when i try to resize the window this is done with a few delays while resize is done.

Can someone give some suggestions how to improve resizeing and why i'm getting that warning?

Thank you all for your time.

Best regards,

borut

Sergey B.
5th November 2007, 12:11
Using Q_OBJECT macros in *.h file?

wysota
5th November 2007, 13:03
Second, the appliation resize event is veeery slow. So far only widgets are used and when i try to resize the window this is done with a few delays while resize is done.

How many widgets do you have there? Are they custom widgets or ones that come with Qt?

spud
5th November 2007, 13:26
THe reason for the warning is that when you ran qmake, you had a class declaration with the Q_OBJECT macro in serviscenter.cpp which leads to moc being executed on the file, generating a file called serviscenter.moc, containing the signal n' slot stuff for the class. Apparently you've sinced removed the class or at least the Q_OBJECT macro, which is why moc is complaining. You only need to rerun qmake to remove the warning.

bkastel1
5th November 2007, 13:46
yes i am. and i'm also usign some QItemDelegate in my TreeWidget. Could this have something to do with it?

bkastel1
5th November 2007, 13:59
All widgets are the one from Qt except that i dont use ui designer but i make them from my C++ code and one TreeWidget uses QItemDelegate.

wysota
5th November 2007, 17:52
Could we see the code of the constructor and any events you might have reimplemented?

bkastel1
6th November 2007, 11:25
Here is the function for creating ui:


void ServisCenter::createUi()
{
this->setWindowIcon( QIcon(":/Resources/navigator.png") );

QStringList headers;
QSizePolicy *DetailsPolicy = new QSizePolicy( );


m_VSplitter = new QSplitter( ui.centralWidget );
m_VSplitter->setObjectName( "m_VSplitter ");
m_VSplitter->setOrientation( Qt::Vertical );

m_HSplitter = new QSplitter( m_VSplitter );
m_HSplitter->setObjectName( "m_HSplitter" );
m_HSplitter->setOrientation( Qt::Horizontal );


headers.clear();
headers << tr("ETC ID") << tr("File name") << tr("Size [B]") << tr("Status")
<< tr("Transfered [B]") << tr("Progress") << ("Time");


m_TransfersTree = new QTreeWidget( m_VSplitter );
m_TransfersTree->setHeaderLabels( headers );
m_TransfersTree->setAlternatingRowColors( true );
m_TransfersTree->setRootIsDecorated( false );
m_TransfersTree->setContentsMargins( 0, 0, 0, 0 );
m_TransfersTree->setItemDelegateForColumn( 5, new ItemDelegate( m_TransfersTree ));
m_TransfersTree->setSelectionBehavior( QAbstractItemView::SelectRows );
m_TransfersTree->setSelectionMode( QAbstractItemView::SingleSelection );
m_TransfersTree->setFocusPolicy(Qt::ClickFocus);

headers.clear();


m_ETCTree = new QTreeWidget( m_HSplitter );
m_ETCTree->setHeaderLabel( "ETC Devices" );
m_ETCTree->setContentsMargins( 0, 0, 0, 0 );
m_ETCTree->setRootIsDecorated( true );


widget = new QWidget( m_HSplitter );
m_VLayout = new QVBoxLayout( widget );
m_VLayout->setSpacing( 0 );
m_VLayout->setMargin( 0 );
m_ETCTab = new QTabWidget( widget );

m_ETCTab->setObjectName( "tabWidget" );

tab1 = new QWidget();
tab1->setObjectName( "tab1" );
tab2 = new QWidget();
tab2->setObjectName( "tab2" );

gridTab = new QGridLayout( tab1 );
gridTab->setSpacing( 0 );
gridTab->setMargin( 0 );

m_ETCTab->addTab( tab1, QString() );
m_ETCTab->addTab( tab2, QString() );

m_ETCTab->setTabText( 0, tr("Files") );
m_ETCTab->setTabText( 1, tr("Terminal") );

headers.clear();
headers << tr("File name") << tr("Version") << tr("Boot count") << tr("Date modified")
<< tr("Start sector") << tr("End sector") << tr("Reserved sectors")
<< tr("File size");

m_FilesTree = new QTreeWidget( tab1 );
m_FilesTree->setHeaderLabels( headers );
m_FilesTree->setContentsMargins( 0, 0, 0, 0 );
m_FilesTree->setRootIsDecorated( false );

gridTab->addWidget( m_FilesTree, 0, 0, 1, 1 );

headers.clear();
headers << tr("S/N") << tr("id") << tr("bla") << tr("blabla") << tr("blablabla");

m_ETCDetails = new QTreeWidget( widget );
m_ETCDetails->setHeaderLabels( headers );
m_ETCDetails->setContentsMargins( 0, 0, 0, 0 );
m_ETCDetails->setRootIsDecorated( false );

m_VLayout->addWidget( m_ETCDetails, 1 );
m_VLayout->addWidget( m_ETCTab, 9 );

m_HSplitter->addWidget( m_ETCTree );
m_HSplitter->addWidget( widget );
m_VSplitter->addWidget( m_HSplitter );
m_VSplitter->addWidget( m_TransfersTree );

gridMain = new QGridLayout( ui.centralWidget );
gridMain->setSpacing( 0 );
gridMain->setMargin( 0 );
gridMain->addWidget( m_VSplitter, 1, 0 );

ServisCenter::ServisCenter( QWidget *parent, Qt::WFlags flags )
: QMainWindow( parent, flags )
{
ui.setupUi( this );

createUi();


createActions();
createToolBars();
createStatusBar();
createContextMenus();
readSettings();
}

wysota
6th November 2007, 12:16
Is your final design similar to the one in attachment? Could you check if you experience any slowdowns when using it (for example by previewing it in Designer)?

Additionally, how much data do you insert into each of the tree widgets and when do you insert it? Maybe you could show us the code used for populating the tree widgets?

bkastel1
6th November 2007, 12:54
I've found that even Qt Assistant and Qt demo are working slow. So maybe there is something else that is wrong here. I changed my local pc accout to a domain account a few days ago and maybe i didn't copy all the setting correctly. I will reinstall the VS 2005 and Qt and will let you know what happened.
Thank you all for your time.