Доброе время суток. При разработке GUI обнаружилась проблема с использованием QTextCursor для QTextEdit. В частности: при попытке изменения позиции курсора в тексте методами QTextCursor :: setPosition ( int pos, MoveMode m = MoveAnchor ) и QTextCursor::movePosition ( MoveOperation operation, MoveMode mode = MoveAnchor, int n = 1 ) ничего не происходит, курсор остается там же где и был. Так же оказалось невозможным снять выделение (selection) при помощи QTextCursor :: clearSelection().
Далее привожу полный текст разработанного мною класса:
//my_editor.cpp
#include "my_editor.h"
/*!******************************************************************************************************/
my_editor::my_editor(QWidget* p)
: QTextEdit(p)
{
connect(this,SIGNAL (selectionChanged()), SLOT (slot_on_sel_changed()));
QFile f(QFileDialog::getOpenFileName(this,tr("Open files"), "/root", tr("All Files (*)")));
if(f.open(QIODevice::ReadOnly))
{
QTextStream s(&f);
QString str = s.readAll();
setPlainText (str);
f.close();
}
selectAll();
textCursor().clearSelection();
textCursor().setPosition(toPlainText().length()/2);
textCursor().movePosition(QTextCursor::NextCharacter,QTextCursor::KeepAnchor,toPlainText().length());
currentCharFormat().setBackground(QBrush(Qt::blue));
textCursor().clearSelection();
}
/*!******************************************************************************************************/
my_editor::~my_editor()
{
}
/*!******************************************************************************************************/
void my_editor::slot_on_sel_changed ()
{
QTextCharFormat format = currentCharFormat();
format.setBackground(QBrush(Qt::red));
setCurrentCharFormat(format);
}
/*!******************************************************************************************************/
//my_editor.h
#ifndef MY_EDITOR_H
#define MY_EDITOR_H
#include <QtGui>
#include <qfile.h>
#include <qtextstream.h>
class my_editor : public QTextEdit
{
Q_OBJECT
public:
my_editor(QWidget* p);
~my_editor();
private slots:
void slot_on_sel_changed ();
};
#endif
Может кто нибудь подскажет в чем проблема?