Я создавал очень простой класс как часть гораздо более крупного проекта.Класс был таким простым:
class Login : public QDialog
{
Q_OBJECT
private:
QLineEdit* txtUser;
QLineEdit* txtPass;
void setupUI();
public:
Login(QWidget* parent = 0);
};
При попытке создать функцию setupUI()
строка txtUser = new QLineEdit;
потерпит крах.Я пытался изменить многое, и ничего не помогло.Я взял проект, скопировал его и удалил все, кроме этого класса и main.cpp
, и ошибки не было.Я вернулся к своему первоначальному проекту (перезагрузка Qt Creator), и он продолжал терпеть неудачу.Я начал комментировать случайные самописные заголовочные файлы из основного в случае какого-либо конфликта.После комментирования каждого я перекомпилирую и запускаю.Каждый раз это продолжит терпеть неудачу.После последнего все заработало.Затем я снова включил все, и он снова заработал.
Итак, мой вопрос: что могло вызвать ошибку такого типа с таким простым кодом?Кроме того, что могли бы сделать мои изменения, чтобы исправить это, если код не был изменен?В принципе, если я получаю эту проблему когда-либо снова, и я уверен, что ошибок нет, какие шаги я должен предпринять?
Пожалуйста, помните, что я использую Qt и Qt Creator в Windows.
Наконец, ради завершения, вот код в setupUI()
:
void Login::setupUI()
{
QVBoxLayout* main = new QVBoxLayout;
QHBoxLayout* userBox = new QHBoxLayout;
QHBoxLayout* passBox = new QHBoxLayout;
txtUser = new QLineEdit;
txtPass = new QLineEdit;
userBox->addWidget(new QLabel("User Name:"));
userBox->addWidget(txtUser);
passBox->addWidget(new QLabel("Password:"));
txtPass->setEchoMode(QLineEdit::Password);
passBox->addWidget(txtPass);
main->addLayout(userBox);
main->addLayout(passBox);
setLayout(main);
}