Всем привет!
Мне необходимо пропатчить kdm, добавив возможность регистрации
пользователей.
Я добавил кнопку "Register" и связял её сигнал clicked() со слотом:
void
KStdGreeter::fake()
{
KRegisterDialog d;
d.exec();
}
/////////////// kregister_dialog.h //////////////////
#ifndef K_REGISTER_DIALOG_
#define K_REGISTER_DIALOG_
#include <qdialog.h>
#include <map>
class QLabel;
class QLineEdit;
class QWidget;
class QGridLayout;
class QPushButton;
class KRegisterDialog : public QDialog
{
// Q_OBJECT
public:
KRegisterDialog(QWidget *parent = 0);
~KRegisterDialog();
private:
typedef enum {studentID, login, password, passwordAgain} fields_t;
std::map<fields_t, QLabel*> labels_;
std::map<fields_t, QLineEdit*> lineEdits_;
QPushButton* submitButton_;
QGridLayout* gLayout_;
};
#endif //K_REGISTER_DIALOG_
/////////////// kregister_dialog.cpp //////////////////
#include "kregister_dialog.h"
#include <qlabel.h>
#include <qlineedit.h>
#include <qwidget.h>
#include <qlayout.h>
#include <qpushbutton.h>
KRegisterDialog::KRegisterDialog(QWidget* parent) : QDialog(parent)
{
labels_[studentID] = new QLabel("Student ID",this);
lineEdits_[studentID] = new QLineEdit(this);
labels_[login] = new QLabel("Login name",this);
lineEdits_[login] = new QLineEdit(this);
labels_[password] = new QLabel("Password",this);
lineEdits_[password] = new QLineEdit(this);
labels_[passwordAgain] = new QLabel("Retype password",this);
lineEdits_[passwordAgain] = new QLineEdit(this);
submitButton_ = new QPushButton(this);
submitButton_->setText("Submit");
gLayout_ = new QGridLayout(this);
gLayout_->addWidget(labels_[studentID] ,0,0);
gLayout_->addWidget(lineEdits_[studentID] ,0,1);
gLayout_->addWidget(labels_[login] ,1,0);
gLayout_->addWidget(lineEdits_[login] ,1,1);
gLayout_->addWidget(labels_[password] ,2,0);
gLayout_->addWidget(lineEdits_[password] ,2,1);
gLayout_->addWidget(labels_[passwordAgain] ,3,0);
gLayout_->addWidget(lineEdits_[passwordAgain] ,3,1);
gLayout_->addWidget(submitButton_ ,4,1);
}
KRegisterDialog::~KRegisterDialog()
{
// TODO : Free all!
}
Вот что получилось:
1) Диалог открывается не в отдельном окне, а накладывается на виджет
верхнего уровня (KStdGreeter)!!!
Почему - не понимаю. На маленьком примере все работает.
Подозреваю что-то в KDE!?
2) В QLineEdit'ы я ничего ввести не могу!
Вот такие странности.
Может подскажет кто в чем здесь дело?
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Qt: передать значение из QLineEdit в глобальную переменную (2012)
- Форум Размер виджета в Qt (2004)
- Форум Диалог авторизации (2013)
- Форум QListView не хочет отображаться, если вызывать внутри класса. (2008)
- Форум Object::connect: No such slot QLCDNumber::display(3) (2009)
- Форум Qt, С++, указатели, отчаяние. (2009)
- Форум QTabWidget и динамически изменяющаяся страница (2013)
- Форум Qt Creator. Кто как предпочитает подключать *.ui ? (2010)
- Форум [QT] subclassing (2009)
- Форум Помогите ламеру с Qstring (2006)