crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> TextEdit, добавление текста
Antrix
  опции профиля:
сообщение 14.11.2008, 23:47
Сообщение #1


Студент
*

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

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




Репутация:   0  


Проблемма в следующем:
1. Есть TextEdit_1
2. Есть TextEdit_2

Нужно добавить текст из TextEdit_2 в TextEdit_1.
У TextEdit'та есть метод
QTextDocument * document () const - получить указатель на документ, но возникает вопрос, а как же теперь добавить полученный QTextDocument к другому TextEdit'ту?
Метод
void setDocument ( QTextDocument * document ) - не подходит, ибо устанавливает документ, а мне нужно к уже существующему добавить новый.
Возможно мне надо каким-то образом QTextDocument рабивать на QString и добавлять построчно
void append ( const QString & text ) - ?
Подскажите пожалуйста.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.11.2008, 1:22
Сообщение #2


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

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

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




Репутация:   94  


если тебе все скопом надо перенести, то самы простой путь:
TextEdit_1.selectAll();
TextEdit_1.copy();
TextEdit_2.paste();

если части, то нужно пользоватся либо курсором, либо базовыми еденицами текста
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Antrix
  опции профиля:
сообщение 15.11.2008, 10:27
Сообщение #3


Студент
*

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

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




Репутация:   0  


Еще один вопрос: почему когда я создаю функцию void f(QTextDocument); - то компилятор не выдаёт ошибок, а если я создаю слот
public slots: void slot(QTextDocument); - то выдает вот такую ошибку:

------ Build started: Project: chat, Configuration: Debug Win32 ------
MOC NickDialog.h
MOC MainWindow.h
MOC InputDialog.h
MOC DataBase.h
MOC AServer.h
MOC AClient.h
UIC NickForm.ui
UIC Form.ui
UIC DialogForm.ui
Compiling...
moc_NickDialog.cpp
moc_MainWindow.cpp
.\tmp\moc\debug_shared\moc_MainWindow.cpp(92) : error C2248: 'QTextDocument::QTextDocument' : cannot access private member declared in class 'QTextDocument'
        c:\qt\4.4.1\include\qtgui\../../src/gui/text/qtextdocument.h(276) : see declaration of 'QTextDocument::QTextDocument'
        c:\qt\4.4.1\include\qtgui\../../src/gui/text/qtextdocument.h(106) : see declaration of 'QTextDocument'
moc_InputDialog.cpp
moc_DataBase.cpp
moc_AServer.cpp
moc_AClient.cpp
main.cpp
NickDialog.cpp
MainWindow.cpp
.\MainWindow.cpp(161) : warning C4100: 'outputText' : unreferenced formal parameter
InputDialog.cpp
DataBase.cpp
AServer.cpp
AClient.cpp
Generating Code...
Build log was saved at "file://c:\QT\4.4.1\bin\chat\tmp\obj\debug_shared\BuildLog.htm"
chat - 1 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


Компилятор - visual studio 2005 + qt
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 15.11.2008, 12:40
Сообщение #4


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

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

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




Репутация:   5  


потому-что slot это ключевое слово для moc
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Antrix
  опции профиля:
сообщение 15.11.2008, 13:55
Сообщение #5


Студент
*

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

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




Репутация:   0  


Нет дело не в том, вот я переименовал слот:
public slots:
void test(QTextDocument);
Ошибка таже.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Antrix
  опции профиля:
сообщение 15.11.2008, 15:16
Сообщение #6


Студент
*

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

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




Репутация:   0  


А если писать
void test(QTextDocument*); вместо void test(QTextDocument);- то ошибка уже не возникает. Так в чем же дело это баг, или я что то не правильно делаю?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.11.2008, 16:41
Сообщение #7


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

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

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




Репутация:   94  


Antrix, я вообще не понял о чем ты. можешь привести объявление класса и реализацию слота?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Antrix
  опции профиля:
сообщение 16.11.2008, 13:11
Сообщение #8


Студент
*

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

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




Репутация:   0  


Вот объявление класса
#ifndef _MainWindow_h_
#define _MainWindow_h_

#include <QMainWindow>
#include "ui_Form.h"
#include "AServer.h"
#include "AClient.h"
#include <QTextDocument>

class MainWindow : public QMainWindow, public Ui::MainWindow
{
    Q_OBJECT
public:
    MainWindow(QMainWindow* parent = 0);

private:
    AServer* server;
    AClient* client;
    bool serverEnableFlag;//флаг работе сервера
    bool clientEnableFlag;//флаг работы клиента
    bool cilentDisconnectedFlag;//флаг отсоединения клиента
    QString nickName;//ник
    QString nickNameOutput;//отформатированый ник
    QString setNick(QString nick);//форматирование ника

signals:
    //сигнал посылки текста
    void sendText(const QTextDocument&);
    void sendText(const QString&);
    //сигнал посылки ника
    void sendNick(QString);

public slots:
    //слот установки режима сервера
    void slotSetServerMode();
    //слот установки режима клиента
    void slotSetClientMode();
    //слот посылки текста
    void slotSendText();
    //слот смены ника
    void slotChangeNick();
    //слот ошибки сокета клиента
    void slotClientError();

    //слот вывода текста
    void slotTextOutput(QString);
    void slotTextOutput(QTextDocument*);

    void test(QTextDocument a);
    
};

#endif

Реализация
#include <QMessageBox>
#include "MainWindow.h"
#include "AServer.h"
#include "AClient.h"
#include "InputDialog.h"
#include "NickDialog.h"
#include "ui_Form.h"
#include <QTextDocument>
#include <QtSql>
#include <QSqlDatabase>
#include "DataBase.h"

const int Port = 5555;

MainWindow::MainWindow(QMainWindow *parent) : QMainWindow(parent)
{    
    . . .
}




void MainWindow::test(QTextDocument a)
{

}



Ошибка:

------ Build started: Project: chat, Configuration: Debug Win32 ------
MOC MainWindow.h
Compiling...
moc_MainWindow.cpp
.\tmp\moc\debug_shared\moc_MainWindow.cpp(95) : error C2248: 'QTextDocument::QTextDocument' : cannot access private member declared in class 'QTextDocument'
        c:\qt\4.4.1\include\qtgui\../../src/gui/text/qtextdocument.h(276) : see declaration of 'QTextDocument::QTextDocument'
        c:\qt\4.4.1\include\qtgui\../../src/gui/text/qtextdocument.h(106) : see declaration of 'QTextDocument'
main.cpp
MainWindow.cpp
AServer.cpp
Generating Code...
c:\qt\4.4.1\bin\chat\mainwindow.cpp(164) : warning C4700: uninitialized local variable 'documentBuffer' used
Build log was saved at "file://c:\QT\4.4.1\bin\chat\tmp\obj\debug_shared\BuildLog.htm"
chat - 1 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Причина редактирования: для длинного кода вместо codebox используйте expand
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.11.2008, 14:02
Сообщение #9


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

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

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




Репутация:   94  


Antrix, выкладывай moc_MainWindow.cpp
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Antrix
  опции профиля:
сообщение 16.11.2008, 16:50
Сообщение #10


Студент
*

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

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




Репутация:   0  


Вот:

Раскрывающийся текст
/****************************************************************************
** Meta object code from reading C++ file 'MainWindow.h'
**
** Created: Sun 16. Nov 11:56:19 2008
** by: The Qt Meta Object Compiler version 59 (Qt 4.4.1)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/

#include "../../../MainWindow.h"
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'MainWindow.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 59
#error "This file was generated using the moc from 4.4.1. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif

QT_BEGIN_MOC_NAMESPACE
static const uint qt_meta_data_MainWindow[] = {

// content:
1, // revision
0, // classname
0, 0, // classinfo
11, 10, // methods
0, 0, // properties
0, 0, // enums/sets

// signals: signature, parameters, type, tag, flags
12, 11, 11, 11, 0x05,
36, 11, 11, 11, 0x05,
54, 11, 11, 11, 0x05,

// slots: signature, parameters, type, tag, flags
72, 11, 11, 11, 0x0a,
92, 11, 11, 11, 0x0a,
112, 11, 11, 11, 0x0a,
127, 11, 11, 11, 0x0a,
144, 11, 11, 11, 0x0a,
162, 11, 11, 11, 0x0a,
186, 11, 11, 11, 0x0a,
219, 217, 11, 11, 0x0a,

0 // eod
};

static const char qt_meta_stringdata_MainWindow[] = {
"MainWindow\0\0sendText(QTextDocument)\0"
"sendText(QString)\0sendNick(QString)\0"
"slotSetServerMode()\0slotSetClientMode()\0"
"slotSendText()\0slotChangeNick()\0"
"slotClientError()\0slotTextOutput(QString)\0"
"slotTextOutput(QTextDocument*)\0a\0"
"test(QTextDocument)\0"
};

const QMetaObject MainWindow::staticMetaObject = {
{ &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow,
qt_meta_data_MainWindow, 0 }
};

const QMetaObject *MainWindow::metaObject() const
{
return &staticMetaObject;
}

void *MainWindow::qt_metacast(const char *_clname)
{
if (!_clname) return 0;
if (!strcmp(_clname, qt_meta_stringdata_MainWindow))
return static_cast<void*>(const_cast< MainWindow*>(this));
if (!strcmp(_clname, "Ui::MainWindow"))
return static_cast< Ui::MainWindow*>(const_cast< MainWindow*>(this));
return QMainWindow::qt_metacast(_clname);
}

int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QMainWindow::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
switch (_id) {
case 0: sendText((*reinterpret_cast< const QTextDocument(*)>(_a[1]))); break;
case 1: sendText((*reinterpret_cast< const QString(*)>(_a[1]))); break;
case 2: sendNick((*reinterpret_cast< QString(*)>(_a[1]))); break;
case 3: slotSetServerMode(); break;
case 4: slotSetClientMode(); break;
case 5: slotSendText(); break;
case 6: slotChangeNick(); break;
case 7: slotClientError(); break;
case 8: slotTextOutput((*reinterpret_cast< QString(*)>(_a[1]))); break;
case 9: slotTextOutput((*reinterpret_cast< QTextDocument*(*)>(_a[1]))); break;
case 10: test((*reinterpret_cast< QTextDocument(*)>(_a[1]))); break;
}
_id -= 11;
}
return _id;
}

// SIGNAL 0
void MainWindow::sendText(const QTextDocument & _t1)
{
void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
}

// SIGNAL 1
void MainWindow::sendText(const QString & _t1)
{
void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
QMetaObject::activate(this, &staticMetaObject, 1, _a);
}

// SIGNAL 2
void MainWindow::sendNick(QString _t1)
{
void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
QMetaObject::activate(this, &staticMetaObject, 2, _a);
}
QT_END_MOC_NAMESPACE
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 14.11.2019, 14:23