Installation and getting started with first app



  • try to install libstdc++.
    Question: which distro do you use? And do you have g++ installed already?



  • thanks for the response man..i am totally new to Linux..could you please lemme know how to fetch those info you asked ??



  • If you're on linux, you should already have that lib I'd say.



  • I have installed CentOS 5.5 yesterday and tried to install Qt..could you please gimme those commands to check if that lib is existing and its verson ??



  • For linux help, you're on the wrong channel. Sorry. This is not Qt related anymore.



  • I agree..but it happened while i tried to install Qt on Linux...help is appreciated more





  • thanks amn..I will go through that link now..

    btw I have this compiler error when I compiled my demo app on windows using QTreeView which I am planning to display the SystemStorage info

    In file included from ..\IDT_Demo_UI\main.cpp:2:
    ..\IDT_Demo_UI/idt_mainwindow.h:23: error: ISO C++ forbids declaration of 'QSystemStorageInfo' with no type
    ..\IDT_Demo_UI/idt_mainwindow.h:23: error: expected ';' before '*' token



  • its say were you have to look!
    ĺine 23 of the file idt_mainwindow.h, you didnt end the line with ; or/and you didnt include QSystemStorageInfo



  • Or you only declared the type like
    @
    class QSystemStorageInfo;
    @
    and use it as member. This is not allowed. If you use it for pointers, declaration like above should work.



  • Gerolf...I have included
    #include <QSystemStorageInfo>

    and this is the complete compilation report


    @
    Running build steps for project IDT_Demo_UI...
    Configuration unchanged, skipping qmake step.

    Starting: "C:\QtSDK\mingw\bin\mingw32-make.exe" -w

    mingw32-make: Entering directory `E:/Bose/Qt playground/IDT_Demo_UI-build-desktop'

    C:/QtSDK/mingw/bin/mingw32-make -f Makefile.Debug

    mingw32-make[1]: Entering directory `E:/Bose/Qt playground/IDT_Demo_UI-build-desktop'

    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"c:\QtSDK\Desktop\Qt\4.7.2\mingw\include\QtCore" -I"c:\QtSDK\Desktop\Qt\4.7.2\mingw\include\QtGui" -I"c:\QtSDK\Desktop\Qt\4.7.2\mingw\include" -I"c:\QtSDK\Desktop\Qt\4.7.2\mingw\include\ActiveQt" -I"debug" -I"." -I"..\IDT_Demo_UI" -I"." -I"c:\QtSDK\Desktop\Qt\4.7.2\mingw\mkspecs\win32-g++" -o debug\main.o ..\IDT_Demo_UI\main.cpp

    In file included from ..\IDT_Demo_UI\main.cpp:2:

    ..\IDT_Demo_UI/idt_mainwindow.h:4:30: error: QSystemStorageInfo: No such file or directory

    In file included from ..\IDT_Demo_UI\main.cpp:2:

    ..\IDT_Demo_UI/idt_mainwindow.h:23: error: ISO C++ forbids declaration of 'QSystemStorageInfo' with no type

    ..\IDT_Demo_UI/idt_mainwindow.h:23: error: expected ';' before '*' token

    mingw32-make[1]: Leaving directory `E:/Bose/Qt playground/IDT_Demo_UI-build-desktop'

    mingw32-make: Leaving directory `E:/Bose/Qt playground/IDT_Demo_UI-build-desktop'

    mingw32-make[1]: *** [debug/main.o] Error 1

    mingw32-make: *** [debug] Error 2

    The process "C:\QtSDK\mingw\bin\mingw32-make.exe" exited with code 2.

    Error while building project IDT_Demo_UI (target: Desktop)
    @

    When executing build step 'Make'


    and this is .h file

    @
    #ifndef IDT_MAINWINDOW_H
    #define IDT_MAINWINDOW_H

    #include <QSystemStorageInfo>
    #include <QtGui>
    #include <QMainWindow>

    namespace Ui {
    class IDT_MainWindow;
    }

    class IDT_MainWindow : public QMainWindow
    {
    Q_OBJECT

    public:
    explicit IDT_MainWindow(QWidget *parent = 0);
    ~IDT_MainWindow();

    private:
    Ui::IDT_MainWindow *ui;

    QSystemStorageInfo *sti;
    

    };

    #endif // IDT_MAINWINDOW_H

    @




  • please wrap your code with @ tag



  • I am realy sorry vinb...I didn't get you !! how to rap with a tag ??



  • i dont think "QSystemStorageInfo" exist in Qt,
    only:
    QSysInfo
    QSystemLocale
    QSystemSemaphore
    QSystemTrayIcon

    If it is your own made you have to use "" instead of <>.



  • use @
    then your code and end with "@" without the ""



  • Your problem lies more in the beginning of your build output:

    @
    ..\IDT_Demo_UI/idt_mainwindow.h:4:30: error: QSystemStorageInfo: No such file or directory
    @

    where does QSystemStorageInfo come from?

    If I googled correctly, it's part of QtMobility, did you install that? did you add the needed include paths in the pro file?



  • ok...then which class should i use to get the system storage info if it is for desktop application ?



  • Afaik QtMobility may also be used on the Desktop. But you have to set your include paths.



  • please guide me how to set that ...



  • I said Afaik, not that I did it before ;-)

    I never used QtMobility



  • [quote author="Thomas Kennedy" date="1301490967"]ok...then which class should i use to get the system storage info if it is for desktop application ?[/quote]

    I don't know what info you want to get from QSystemStorageInfo, but maybe "QDesktopServices::storageLocation() ":http://doc.qt.nokia.com/4.7/qdesktopservices.html#storageLocation provides what you need.


  • Moderators

    In order to use the QSystemStorageInfo class from Mobility, be sure that in your .pro file you have included the lines

    @
    CONFIG += mobility
    MOBILITY += systeminfo
    @



  • Thanks a lot...

    without changing .pro file I am trying with QDir::Drives()..I will update you soon about my results..before that I have another query...

    I have placed my controls on the main window by opening 'mainwindow.ui' in design mode..how would I create control variables for those controls in my code using QTCreator ?



  • "control variables"? You mean you need a pointer to them?

    @
    m_ui->myCoolLineEdit->setText("I'm so cool!");
    @

    works for me. myCoolLineEdit is of course the name you gave the widget in Designer, and m_ui is the member variable that holds the UI class you created.



  • excellent..now i understood this part Andre..I have creaed a QTreeWidget on my MainWindow and coded like tihs..

    @
    ui->treeWidgetDrives = new QTreeWidget();
    ui->treeWidgetDrives->setColumnCount(1);
    QStringList strlstHeaders;
    strlstHeaders<<tr("Storage Drives");
    ui->treeWidgetDrives->setHeaderLabels(strlstHeaders);
    @

    ...when i run my code nothing is happened to my TreeWidget(no header is assigned)..instead it is showing the properties which i set from 'Edit Tree Widget' dialog !!!

    [EDIT: code formatting, please use @-tags, Volker]



  • The tree widget is automatically created for you. Just remove the first line of your snippet.



  • if i remove that line and run the code I am not getting my Window displayed and here is the ouput..

    Starting E:\Bose\Qt playground\IDT_Demo_UI-build-desktop\debug\IDT_Demo_UI.exe...
    E:\Bose\Qt playground\IDT_Demo_UI-build-desktop\debug\IDT_Demo_UI.exe exited with code -1073741819



  • code -1073741819 = 0xC0000005. On windows this means an access violation. Seems like your UI is not initialized properly or messed up in some way....



  • perfect analysis..

    I have moved this line to bottom of the code like this..

    @
    IDT_MainWindow::IDT_MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::IDT_MainWindow)

    {
    // my code here...

        ui->setupUi(this);
    

    }
    @

    now i moved it to top and works fine..thanks a ton

    [EDIT: code formatting, please use @-tags or the editor button, Volker]



  • only one child item is being shown to my TreeWidget..please look into my code and lemme know where I went wrong !!

    @IDT_MainWindow::IDT_MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::IDT_MainWindow)

    {
    ui->setupUi(this);

    ui->treeWidgetDrives->setColumnCount(1);
    QStringList strlstHeaders;
    strlstHeaders<<tr("Storage Drives");
    ui->treeWidgetDrives->setHeaderLabels(strlstHeaders);
    
    SetupTreeItems();
    

    }
    void IDT_MainWindow::SetupTreeItems()
    {
    QTreeWidgetItem *treeItems = new QTreeWidgetItem(ui->treeWidgetDrives);
    treeItems->setText(0,tr("SystemDrives"));
    QTreeWidgetItem *treeChildItems = new QTreeWidgetItem(treeItems);
    QDir dir;
    dir.setFilter(QDir::Drives);

    QFileInfoList roots = dir.drives();
    
    for(int i=0 ; i<roots.count() ; ++i)
    {
        QFileInfo fiDrives = roots.at(i);
        QString strDrive = fiDrives.absoluteFilePath();
        treeChildItems->setText(i,strDrive);
    }
    

    }@



  • You must create a new item in your loop. You just overwrite the on you have in each iteration.



  • Your loop keeps on updating the text of the same tree item. Do you really expect to see more of them then?



  • you mean like this ??

    @for(int i=0 ; i<roots.count() ; ++i)
    {
    treeChildItems = new QTreeWidgetItem(treeItems);
    QFileInfo fiDrives = roots.at(i);
    QString strDrive = fiDrives.absoluteFilePath();
    treeChildItems->setText(i,strDrive);
    }@



  • [quote author="Thomas Kennedy" date="1301584395"]you mean like this ??

    @for(int i=0 ; i<roots.count() ; ++i)
    {
    treeChildItems = new QTreeWidgetItem(treeItems);
    QFileInfo fiDrives = roots.at(i);
    QString strDrive = fiDrives.absoluteFilePath();
    treeChildItems->setText(i,strDrive);
    }@
    [/quote]

    You can try it to get the answer :-)



  • tried...it added an 'empty item' at 0th position,and 'c:' at 1st..and no more :-(



  • So... you need to aquire some debugging skills... Just try to follow what happens in your code. Don't guess: measure instead. Try for instance to insert statements like this at every relevant point in your function, and look at the output:

    @
    qDebug() << LINE;
    @



  • :-)) ok..will do that..



  • Of course you must have an empty first entry, because you create this one outside your loop (line 21 in your original code snippet).

    This is the compactified working version:

    @
    void FancyClass::populate() {
    ui->treeWidget->setColumnCount(1);
    QStringList headers;
    headers << "Storage Device";
    ui->treeWidget->setHeaderLabels(headers);

    QTreeWidgetItem *rootItem = new QTreeWidgetItem(ui->treeWidget);
    rootItem->setText(0, "SystemDevice");
    
    foreach(QFileInfo drive, QDir::drives()) {
        QTreeWidgetItem *driveItem = new QTreeWidgetItem(rootItem);
        driveItem->setText(0, drive.absoluteFilePath());
    }
    

    }
    @



  • /me is thinking that instead of building a tree like that himself, he would use a QFileSystemModel instead...



  • thanks a lot...I will try with QFileSystemModel too..


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.