Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Question about an example of “C++ GUI Programming with Qt 4
Forum Updated to NodeBB v4.3 + New Features

Question about an example of “C++ GUI Programming with Qt 4

Scheduled Pinned Locked Moved General and Desktop
11 Posts 3 Posters 6.6k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    bc913
    wrote on last edited by
    #1

    Hi,

    I am working on the same example with QT 4.8.4 and QT Creator 2.6.2. When I run it, several errors including the followings occur. I have tried all the ways from the forum but I haven’t fixed.

    I have cleaned the project, rebuild and run qmake. But, it doesn’t solve. Any help is appreciated.

    Regards,

    1. error: C2628: ‘FindDialog’ followed by ‘int’ is illegal (did you forget a ‘;’?)
    2. error: C3874: return type of ‘main’ should be ‘int’ instead of ‘FindDialog’ 3. error: C2664: ‘FindDialog::FindDialog(QWidget *)’ : cannot convert parameter 1 from ‘int’ to ‘QWidget *’
    3. Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast

    @ //finddialog.cpp
    #include <QtGui>
    #include "FindDialog.h"

    FindDialog::FindDialog(QWidget *parent)
            : QDialog(parent){
        label = new QLabel(tr("Find &what: "));
        lineEdit = new QLineEdit;
        label->setBuddy(lineEdit);
     
        caseCheckBox = new QCheckBox(tr("Match &case"));
        backwardCheckBox = new QCheckBox(tr("Search &Backward"));
     
        findButton = new QPushButton(tr("&Find"));
        findButton->setDefault(true);
        findButton->setEnabled(false);
     
        closeButton = new QPushButton(tr("Close"));
     
        connect(lineEdit, SIGNAL(textChanged(QString &)),this, SLOT(enableFindButton(QString &)));
        connect(findButton, SIGNAL(clicked()), this, SLOT(findclicked()));
        connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));
     
        QHBoxLayout *topLeftLayout = new QHBoxLayout;
        topLeftLayout->addWidget(label);
        topLeftLayout->addWidget(lineEdit);
     
        QVBoxLayout *leftLayout = new QVBoxLayout;
        leftLayout->addLayout(topLeftLayout);
        leftLayout->addWidget(caseCheckBox);
        leftLayout->addWidget(backwardCheckBox);
     
        QVBoxLayout *rightLayout = new QVBoxLayout;
        rightLayout->addWidget(findButton);
        rightLayout->addWidget(closeButton);
        rightLayout->addStretch();
     
        QHBoxLayout *mainLayout = new QHBoxLayout;
        mainLayout->addLayout(leftLayout);
        mainLayout->addLayout(rightLayout);
        setLayout(mainLayout);
     
        setWindowTitle(tr("Find"));
        setFixedHeight(sizeHint().height());
     
    }
     
    void FindDialog::findClicked() // kullanici find butonunu tıkladığında calisir
    {
        QString text = lineEdit->text();
     
        Qt::CaseSensitivity cs = caseCheckBox->isChecked() ? Qt::CaseSensitive : Qt::CaseInsensitive;
     
        if (backwardCheckBox->isChecked()) { //backward Checkbox secili ise findPrevious sinyali yayar
            emit findPrevious(text, cs);}
        else {
            emit findNext(text, cs);}
    }
     
     void FindDialog::enableFindButton(const QString &text) // satır editöründe metin degisiligi olunca finbutton calistirilir...
    {
      findButton->setEnabled(!text.isEmpty());
    }
    
    //finddialog.h
    #ifndef FINDDIALOG_H
    #define FINDDIALOG_H
     
    #include <QDialog>
     
    class QCheckbox;
    class QLabel;
    class QLineEdit;
    class QPushButton;
     
    class FindDialog : public QDialog
    {
        Q_OBJECT
     
    public:
        FindDialog (QWidget *parent = 0);
    signals: // sinyal bildirimleri
        void findNext(const QString &str, Qt::CaseSensitivity cs);
        void findPrevious(const QString &str, Qt::CaseSensitivity cs);
    private slots: // yuva bildirimleri
        void findclicked();
        void enableFindButton(const QString &text);
    private:
        QLabel *label;
        QLineEdit *lineEdit;
        QCheckbox *caseCheckBox;
        QCheckbox *backwardCheckBox;
        QPushButton *findButton;
        QPushButton *closeButton;
    }
     
    #endif // FINDDIALOG_H
    
    //main.cpp
    #include <QApplication>
    #include "FindDialog.h"
     
    int main(int argc, char *argv[])
    {
     
        QApplication app(argc, argv);
        FindDialog *dialog = new FindDialog;
     
        dialog->show();
        return app.exec();
    }
    

    @

    1 Reply Last reply
    0
    • M Offline
      M Offline
      mwright
      wrote on last edited by
      #2

      Hi,

      In the header file did you end the class definition with a semi-colon. The example you have shown hasn't.

      1 Reply Last reply
      0
      • B Offline
        B Offline
        bc913
        wrote on last edited by
        #3

        Hi,

        Yer, you are right. I forgot it but after I have added the semi-colon, error situation continues. Only the number of errors were decreased...

        Only, the errors about QCheckBox still exist.

        1 Reply Last reply
        0
        • M Offline
          M Offline
          mwright
          wrote on last edited by
          #4

          Can you provide the error(errors) and line(lines) in the code the compiler is pointing to?

          1 Reply Last reply
          0
          • B Offline
            B Offline
            bc913
            wrote on last edited by
            #5

            Here is the error list,

            @error C2440: '=' : cannot convert from 'QCheckBox *' to 'QCheckbox *'
            Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
            ..\bc1\finddialog.cpp(12) : error C2440: '=' : cannot convert from 'QCheckBox *' to 'QCheckbox *'
            Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
            ..\bc1\finddialog.cpp(30) : error C2664: 'QBoxLayout::addWidget' : cannot convert parameter 1 from 'QCheckbox *' to 'QWidget *'
            Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
            ..\bc1\finddialog.cpp(31) : error C2664: 'QBoxLayout::addWidget' : cannot convert parameter 1 from 'QCheckbox *' to 'QWidget *'
            Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
            ..\bc1\finddialog.cpp(48) : error C2039: 'findClicked' : is not a member of 'FindDialog'
            d:\bc913\egitim\yazilim\qt\proje\bc1\FindDialog.h(11) : see declaration of 'FindDialog'
            ..\bc1\finddialog.cpp(50) : error C2065: 'lineEdit' : undeclared identifier
            ..\bc1\finddialog.cpp(50) : error C2227: left of '->text' must point to class/struct/union/generic type
            type is ''unknown-type''
            ..\bc1\finddialog.cpp(52) : error C2065: 'caseCheckBox' : undeclared identifier
            ..\bc1\finddialog.cpp(52) : error C2227: left of '->isChecked' must point to class/struct/union/generic type
            type is ''unknown-type''
            ..\bc1\finddialog.cpp(54) : error C2065: 'backwardCheckBox' : undeclared identifier
            ..\bc1\finddialog.cpp(54) : error C2227: left of '->isChecked' must point to class/struct/union/generic type
            type is ''unknown-type''
            ..\bc1\finddialog.cpp(55) : error C3861: 'findPrevious': identifier not found
            ..\bc1\finddialog.cpp(57) : error C3861: 'findNext': identifier not found@

            1 Reply Last reply
            0
            • B Offline
              B Offline
              bc913
              wrote on last edited by
              #6

              Error lines:
              //finddialog.cpp

              Lines: 11,12,30,31,48,50,52,55, 56, 58

              1 Reply Last reply
              0
              • M Offline
                M Offline
                mwright
                wrote on last edited by
                #7

                Okay so you have a typo for QCheckbox. it should be QCheckBox. please check your code and let us know of any other issue.

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  mwright
                  wrote on last edited by
                  #8

                  you also need to include the QString header. thats why it is complaining on line 50. The compiler has no idea about QString

                  1 Reply Last reply
                  0
                  • B Offline
                    B Offline
                    bc913
                    wrote on last edited by
                    #9

                    Thanks a lot,

                    Also, I have mistaken on findclicked function. I will be much more careful,

                    Regards,

                    1 Reply Last reply
                    0
                    • I Offline
                      I Offline
                      iamfrankenstein
                      wrote on last edited by
                      #10

                      Aren’t you suppose to terminate a class definition with ‘;’?
                      I don’t see that in you header file finddialog.h

                      That is what the compiler means with “did you forget a ‘;’?”
                      I’ll check in a few hours to see your response if its not the case.

                      (Why have you posted you question twice??)

                      1 Reply Last reply
                      0
                      • I Offline
                        I Offline
                        iamfrankenstein
                        wrote on last edited by
                        #11

                        Ow its closed now??

                        1 Reply Last reply
                        0

                        • Login

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups
                        • Search
                        • Get Qt Extensions
                        • Unsolved