crossplatform.ru

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

5 страниц V  < 1 2 3 4 > »   
Ответить в данную темуНачать новую тему
> Написание чата, с чего начать нубу?
Litkevich Yuriy
  опции профиля:
сообщение 26.12.2009, 23:22
Сообщение #11


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

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

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




Репутация:   94  


Цитата(breeve @ 27.12.2009, 2:17) *
Как сделать так чтобы я писал в ptxt2 нажимал ентер а он выводил сверху?
в одной функции main ты этого не сделаешь
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MoPDoBoPoT
  опции профиля:
сообщение 26.12.2009, 23:27
Сообщение #12


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

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




Репутация:   9  


Цитата(breeve @ 26.12.2009, 23:17) *
Спасибо конечно.. но я их делал)

Хех. Делал - это как? Собрал проект, потыркался в проге и все? :)
Цитата(breeve @ 26.12.2009, 23:17) *
Как сделать так чтобы я писал в ptxt2 нажимал ентер а он выводил сверху?

Без наследования никак.
Разберись с сигнал-слотами. В книге у Шлее есть на эту тему простенький пример "Counter".
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.12.2009, 23:29
Сообщение #13


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

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

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




Репутация:   94  


тебе нужно создать класс-окно. Т.е. делаешь наследника от QWidget, в него помещаешь почти всё содержимое main.
У QTextEdit есть сигнал textChanged() и есть слоты:
selectAll()
cut ()
paste ()

идея такая:
соеденяешь сигнал textChanged() QTextEdit'а нижнего со слотом своего окна (надо его создать)
В слоте делаешь последовательно для этого QTextEdit'а
textedit1->selectAll()
textedit1->cut ()
и вставляешь во второй:
textedit2->paste ()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 26.12.2009, 23:50
Сообщение #14


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

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




Репутация:   1  


ну допустим как вывести это я более или менее понял посмотрел про qtextdoc в ассистенте..
Как забиндить ентер.. и как мне считать с textedit'а
вот допустим setPlainText как я понял вставляет туда текст.. А есть ли getPlainText))?

Цитата(breeve @ 26.12.2009, 23:35) *
ну допустим как вывести это я более или менее понял посмотрел про qtextdoc в ассистенте..
Как забиндить ентер.. и как мне считать с textedit'а
вот допустим setPlainText как я понял вставляет туда текст.. А есть ли getPlainText))?

Чет не заметил я вторую страничку..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 27.12.2009, 11:01
Сообщение #15


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

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




Репутация:   1  


Цитата(Litkevich Yuriy @ 26.12.2009, 23:29) *
тебе нужно создать класс-окно. Т.е. делаешь наследника от QWidget, в него помещаешь почти всё содержимое main.
У QTextEdit есть сигнал textChanged() и есть слоты:
selectAll()
cut ()
paste ()

идея такая:
соеденяешь сигнал textChanged() QTextEdit'а нижнего со слотом своего окна (надо его создать)
В слоте делаешь последовательно для этого QTextEdit'а
textedit1->selectAll()
textedit1->cut ()
и вставляешь во второй:
textedit2->paste ()


Алгоритм я понял.. вот сделал как сказали..
Переделал все под класс.. только что мне писать в объявлении TextChanged(), selectAll(), cut(), и paste()?

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 27.12.2009, 12:37
Сообщение #16


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

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




Репутация:   1  


Насчет TextChanged(), .. как я понял они стандартные.. и объявлять их не нужно.. Я тут нашел в книге про textEdit правда мало очень..
такой вопрос как забиндить клавишу? Вот этот textChanged() высылается при изменении текста.. если я сделаю в точности как сказал Litkevich Yuriy, у меня будет так: я печатаю букву "у" - текст изменился, он его весь выделил, вставил вверх.. печатаю след букву "м" происходит тоже самое.. и получается как зеркало что здесь то и там.. Если я конечно правильно понял.. Но мне надо не так.. мне надо чтобы я напечатал, нажал, он как приплюсовал к строке то что я тока что ввел.. т.е было:
> Привет. // я ввел "Хай!" и нажал ентер и получилось

> Привет.
> Хай!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 27.12.2009, 15:12
Сообщение #17


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

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




Репутация:   1  


вот решил пока не заморачиваться насчет ентера сделать кнопку. вот код
main.cpp
#include <QtGui/QApplication>
#include "button.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Button wgt;
    

    wgt.show();
    
    return a.exec();
}

button.cpp
#include "button.h"

Button::Button(QWidget *parent)
    : QWidget(parent)
{
    QTextEdit *ptxt1 = new QTextEdit;
    QTextEdit *ptxt2 = new QTextEdit;
    QPushButton *cmd = new QPushButton("Add");

    QHBoxLayout * MyHLayout = new QHBoxLayout;
    QVBoxLayout * MyVLayout = new QVBoxLayout;

    MyHLayout->setMargin(10);
    MyHLayout->setSpacing(20);
    MyHLayout->addWidget(ptxt2);
    MyHLayout->addWidget(cmd);

    MyVLayout->addWidget(ptxt1);
    MyVLayout->addLayout(MyHLayout);
    setLayout(MyVLayout);

    setWindowTitle("Test Chat");
    setGeometry(5,5, 200, 100);
    
    connect(cmd, SIGNAL(clicked()),
                     SLOT(mySlot())
                     );
}

void Button::mySlot()
{
    ptxt1->selectAll();
    ptxt1->cut();
    ptxt2->paste();
}

button.h
#ifndef BUTTON_H
#define BUTTON_H

#include <QtGui>

class Button : public QWidget
{
    Q_OBJECT

public:
    QTextEdit *ptxt1;
    QTextEdit *ptxt2;
    QPushButton *cmd;
    QHBoxLayout *MyHLayout;
    QVBoxLayout *MyVLayout;
    
    Button(QWidget *parent = 0);
    ~Button() {};
public slots:
    void mySlot();
};

#endif // BUTTON_H


Ввожу что-нибудь нажимаю на кнопку.. он виснет)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.12.2009, 16:15
Сообщение #18


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

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

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




Репутация:   94  


зря ты класс назвал "кнопкой", ведь на кнопке нет полей ввода и т.д.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 27.12.2009, 16:17
Сообщение #19


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

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




Репутация:   1  


Цитата(Litkevich Yuriy @ 27.12.2009, 16:15) *
зря ты класс назвал "кнопкой", ведь на кнопке нет полей ввода и т.д.

А какая разница как он назван? он же не является кнопкой то по сути...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.12.2009, 16:22
Сообщение #20


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

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

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




Репутация:   94  


для отладки в слот вставь qDebug(), например:
void Button::mySlot()
{
    qDebug() << "mySlot";
    ptxt1->selectAll();
    qDebug() << "selectAll";
    ptxt1->cut();
    qDebug() << "cut";
    ptxt2->paste();
    qDebug() << "paste";
}
в pro-файл, добавь:
CONFIG += console
тогда в консоль, при отладочной сборке будут печататься эти строчки, так ты сможешь локализовать проблему.

Цитата(breeve @ 27.12.2009, 19:17) *
А какая разница как он назван? он же не является кнопкой то по сути...
существенная, когда читаешь чужой код, а его милион строк может быть, то ориентируешся на имена. Я смотрю main.cpp, и не понимаю, а где у breeve окно, кнопку вижу, а дальше?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 24.4.2024, 15:49