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, скомпилированного в дебаг версии, при запуске получаю В чем подвох?
Это был первый проект под qt 5.0.1. Поэксперементировал, и выходит, что ни один qt проект, даже самое обычное, созданное по родному шаблону qt приложение, не хочет запускаться из проводника. Сомневаюсь, что это баг qt, посколько его бы обнаружили очень быстро, значит дело скорее всего в каких-то настройках. Кто-нибудь сталкивался?