im пытается написать простую форму журнала в Qt. он должен открыть другую форму, если имя пользователя и пароль правильные. но его действия действительно странно Heres мой код:ошибка при сравнении QString
login::login(QWidget *parent) :
QDialog(parent)
{
QPushButton * login_button = new QPushButton;
QPushButton * exit = new QPushButton;
login_button->setText("LOGIN");
exit->setText("EXIT");
QLineEdit * username = new QLineEdit;
QLineEdit * password = new QLineEdit;
QVBoxLayout * login_layout = new QVBoxLayout ;
QHBoxLayout * button_layout = new QHBoxLayout ;
username->setText("Enter Username ...");
password->setText("Enter Password ... ");
exit->connect(exit,SIGNAL(pressed()),this , SLOT(close()));
login_layout->addWidget(username);
login_layout->addWidget(password);
button_layout->addWidget(login_button);
button_layout->addWidget(exit);
login_layout->addLayout(button_layout);
this->setLayout(login_layout);
this->connect(login_button,SIGNAL(clicked()),this,SLOT(finduser()));
}
void login::finduser()
{
if (username->text().compare("admin")) // <---- problem !!
emit showmanage() ;
return;
}
finduser является SLOT для моего диалогового класса. он выдает сигнал «showmanage», который открывает форму, которую он хочет открыть. Фактическая проблема заключается в выражении if. я понятия не имею, почему, но когда он работает, это приводит к сбою моих окон. это также не работает:
void login::finduser()
{
if (username->text()=="admin") // <---- problem !!
emit showmanage() ;
return;
}
я понятия не имею, что им делать неправильно также Heres сообщение отладки: низшая остановился, потому что recievd сигнал от операционной системы имени сигнала: SIGSEGV Значение сигнала: сегментация вина
Да. это было так. я ненавижу себя :) – A73rnA
Не о чем ненавидеть. Я делаю намного хуже простые ошибки :) – Mahesh