crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> не могу получить текст из QLineEdit, найдите ошибку...
xolvo
  опции профиля:
сообщение 25.8.2008, 16:31
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 25.8.2008
Пользователь №: 274

Спасибо сказали: 0 раз(а)




Репутация:   0  


Я новичек в qt.

Сегодня взялся тестировать QLineEdit класс. Почти написал то, что хотел, но работает это все не так как хочу я. А я хочу, чтобы пользователь ввел имя, а ему в ответ на это появилось окно с приветствием "Hello, %username%."  Но этого не происходит.

вот исходник:
// main.cpp
#include <QtGui>
#include <QMessageBox>
#include <QString>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    
    qApp->setStyleSheet
    (
        "QLineEdit {"
            "border: 2px solid grey;"
            "border-radius: 10px;"
            "padding: 0 8 px;"
            "selection-background-color: darkgrey;"
        "}"
        
        "QPushButton {"
            "border: 1px solid #000000;"
            "border-radius: 10px;"
            "background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,"
                                              "stop: 0 #dedede, stop: 1 #656a6d);"
              "min-width: 80px;"
        "}"
        
        "QPushButton:pressed {"
            "background-color: grey"
        "}"
        
        "QPushButton:flat {"
            "border: none; "
        "}"
    );
    
    QWidget window;
    window.setGeometry(200, 200, 200, 100);
    
    QLineEdit nameLine(&window);                                                              
    nameLine.setGeometry(100, 30, 100, 20);
    
    QLabel lbl("Enter your name:", &window);
    lbl.setGeometry(5, 30, 100, 20);
    
    QString name = nameLine.text();
    
    QMessageBox messageBox;
    messageBox.setGeometry(250, 220, 100, 100);
    messageBox.setText(QString ("Hello, %1").arg(name));
    
    QPushButton btn ("OK", &window);
    btn.setGeometry(63, 75, 75, 20);
    
    QObject::connect(&btn, SIGNAL(clicked()), &messageBox, SLOT(show()));

    window.show ();    
    return app.exec();
}


Что я делаю не так?

p.s. И еще QMessageBox как то не правильно работает... Там кнопка "ОК" не такая как в главном окне. Как это исправить??
Причина редактирования: код в посте
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
3 страниц V  < 1 2 3 >  
Начать новую тему
Ответов (10 - 19)
Litkevich Yuriy
  опции профиля:
сообщение 25.8.2008, 19:08
Сообщение #11


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


xolvo, так, тутор проходим пожалуйста, понимание слотов и сигналов у тебя по нулям.

Даже не заглядывая в файл реализации, а только в заголовочник сразу вопрос ГДЕ СЛОТ?
Про который я говорил:
Цитата(Litkevich Yuriy @ 25.8.2008, 21:13) *
в конструкторе соеденяешь сигнал от кнопки со слотом своего виджета.
4) В слоте копируешь текст из тестового поля и показываешь сообщение.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 25.8.2008, 19:15
Сообщение #12


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Советую написать тебе свой слот mySlot() в котором будет вызываться QMessageBox
и вызывать его из функции main(), либо из конструктора класса так
connect ( okButton, SIGNAL(clicked()), this, SLOT(name = mySlot()) );

Да ксати я вижу что у тебя используется ui файл. но ты не наследуешь свой класс от класса UI::myClass(при условии что так назван класс в ui файле). и не используешь менеджеры компоновки.


Да, кстати из функции main() это делается так
QObject::connect(...)

Сообщение отредактировал molchanoviv - 25.8.2008, 19:19
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 25.8.2008, 19:32
Сообщение #13


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(molchanoviv @ 25.8.2008, 23:15) *
connect ( okButton, SIGNAL(clicked()), this, SLOT(name = mySlot()) );

а вот это зря, так должно быть:
connect ( okButton, SIGNAL(clicked()), this, SLOT(mySlot()) );

Цитата(xolvo @ 25.8.2008, 22:43) *
nmLine->setGeometry(100, 30, 100, 20);
Цитата(xolvo @ 25.8.2008, 22:43) *
messageBox->setGeometry(250, 220, 100, 100);
Цитата(xolvo @ 25.8.2008, 22:43) *
okButton->setGeometry(63, 75, 75, 20);

от этого мусора избавься, используй компоновщик (QLayout)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 25.8.2008, 19:34
Сообщение #14


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Это да, ты прав, просто я скопировал его запись и не заметл что там осталось name=
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
xolvo
  опции профиля:
сообщение 25.8.2008, 19:38
Сообщение #15


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 25.8.2008
Пользователь №: 274

Спасибо сказали: 0 раз(а)




Репутация:   0  


эээ... Я наверно пока почитаю книжек побольше. А потом вернусь к этой теме

Всем спасибо. :greeting:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 25.8.2008, 19:53
Сообщение #16


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


xolvo, ты тутор пройди, ту часть, что мы перевели.

в плоть до "Урока 7 - Влияние одного объекта на другие"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 25.8.2008, 19:55
Сообщение #17


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Книжки читать никогда не вредно, но советую тебе еще и читать форумы - подчерпнешь для себя много полезного
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
xolvo
  опции профиля:
сообщение 25.8.2008, 19:56
Сообщение #18


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 25.8.2008
Пользователь №: 274

Спасибо сказали: 0 раз(а)




Репутация:   0  


я его читал... Вроде все понятно и легко. Тока там ничего такого про слоты нету. И про QLineEdit нету
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 25.8.2008, 20:02
Сообщение #19


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Зато в асистенте есть поиск, а там есть и про слоты, и про QLineEdit
Да кстати советую в качестве учебника почитать Бланшет и Саммерфилда QT4: Программирование GUI на С++,
а в качестве справочника -Макса Шлее(хотя лучше асистента справочника нет, правда он на английском. А где перевод скачать я думаю ты знаешь).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 25.8.2008, 20:05
Сообщение #20


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(xolvo @ 25.8.2008, 23:56) *
Тока там ничего такого про слоты нету

есть!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V  < 1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.5.2024, 6:38