Проблема с Qt 5.0.1

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by 0o Chris o0, 7 Mar 2013.

  1. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    CDialog.h
    Code:
    #ifndef CDIALOG_H
    #define CDIALOG_H
    
    #include <QDialog>
    
    class QCheckBox;
    class QLabel;
    class QLineEdit;
    class QPushButton;
    
    class CDialog : public QDialog
    {
        Q_OBJECT
        
    public:
        CDialog(QWidget *parent = 0);
        ~CDialog();
    
    signals:
        void FindNext(const QString &str, bool caseSensitive);
        void FindPrev(const QString &str, bool caseSensitive);
    
    private slots:
        void findClicked();
        void enableFindButton(const QString &text);
    
    private:
        QLabel* label;
        QLineEdit* lEdit;
        QCheckBox* caseCheckBox;
        QCheckBox* backwardCheckBox;
        QPushButton* FindButton;
        QPushButton* CloseButton;
    };
    
    #endif // CDIALOG_H
    
    CDialog.cpp
    Code:
    #include "CDialog.h"
    
    #include <QtWidgets/qcheckbox.h>
    #include <QtWidgets/qlabel.h>
    #include <QtWidgets/qlineedit.h>
    #include <QtWidgets/qpushbutton.h>
    #include <QtWidgets/qlayout.h>
    
    
    CDialog::CDialog(QWidget *parent) : QDialog(parent) {
        setWindowTitle(tr("Find"));
    
        label = new QLabel(tr("Find &what: "), this);
        lEdit = new QLineEdit(this);
        label->setBuddy(lEdit);
    
        caseCheckBox = new QCheckBox(tr("Match &case"), this);
        backwardCheckBox = new QCheckBox(tr("Search &backward"), this);
    
        FindButton = new QPushButton(tr("&Find"), this);
        FindButton->setDefault(true);
        FindButton->setEnabled(false);
    
        CloseButton = new QPushButton(tr("Close"), this);
    
        QObject::connect(lEdit, SIGNAL(textChanged(QString)), this, SLOT(enableFindButton(QString)));
        QObject::connect(FindButton, SIGNAL(clicked()), this, SLOT(findClicked()));
        QObject::connect(CloseButton, SIGNAL(clicked()), this, SLOT(close()));
    
        QHBoxLayout *topLeftLayout = new QHBoxLayout;
        topLeftLayout->addWidget(label);
        topLeftLayout->addWidget(lEdit);
    
        QVBoxLayout *leftLayout = new QVBoxLayout;
        leftLayout->addLayout(topLeftLayout);
        leftLayout->addWidget(caseCheckBox);
        leftLayout->addWidget(backwardCheckBox);
    
        QVBoxLayout *rigthLayout = new QVBoxLayout;
        rigthLayout->addWidget(FindButton);
        rigthLayout->addWidget(CloseButton);
        rigthLayout->stretch(1);
    
        QHBoxLayout *MainLayout = new QHBoxLayout(this);
        MainLayout->setMargin(11);
        MainLayout->setSpacing(6);
        MainLayout->addLayout(leftLayout);
        MainLayout->addLayout(rigthLayout);
    }
    
    CDialog::~CDialog()
    {
        
    }
    
    
    
    void CDialog::findClicked() {
        QString text = lEdit->text();
        bool caseSensitive = caseCheckBox->isEnabled();
    
        if(backwardCheckBox->isEnabled()) {
            emit FindPrev(text, caseSensitive);
        }else {
            emit FindNext(text, caseSensitive);
        }
    }
    
    void CDialog::enableFindButton(const QString &text) {
        FindButton->setEnabled(!text.isEmpty());
    }
    
    main.cpp
    Code:
    #include "CDialog.h"
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        CDialog *w = new CDialog;
        w->show();
        
        return a.exec();
    }
    
    Компилируется нормально. Если запускать через "Сборка->Запустить", то все работает. Запуск же самого .exe, скомпилированного в релиз версии, из проводника, не производит никакого эффекта. При запуске же .exe, скомпилированного в дебаг версии, при запуске получаю [​IMG]

    В чем подвох?
     
  2. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Это был первый проект под qt 5.0.1. Поэксперементировал, и выходит, что ни один qt проект, даже самое обычное, созданное по родному шаблону qt приложение, не хочет запускаться из проводника. Сомневаюсь, что это баг qt, посколько его бы обнаружили очень быстро, значит дело скорее всего в каких-то настройках. Кто-нибудь сталкивался?