Russian Qt Forum
Апрель 25, 2024, 08:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 26 27 [28] 29 30
406  Qt / Установка, сборка, отладка, тестирование / Re: Проблема перехода VC6 -> VC2005 : Июль 31, 2008, 19:31
Зачем? Давай мыльник свой, я вышлю тебе инсталлятор (~2 метра), если не хочешь/не умеешь искать.



   vcredist_x86.exe   у меня есть. А какая с него польза?
У меня студия 2005 Standard Edition
407  Qt / Установка, сборка, отладка, тестирование / Re: Проблема перехода VC6 -> VC2005 : Июль 31, 2008, 18:37
А в самом MSVC2005 есть возможность создания установочного пакета (типа InstallShild в Builder Борланда)?
408  Qt / Установка, сборка, отладка, тестирование / Re: Проблема перехода VC6 -> VC2005 : Июль 31, 2008, 18:32
Увы, приходится тащить папку

C:\WINDOWS\WinSxS


А это крайне неприятно.
Может есть возможность создавать что-либо типа ИНСТАЛЯТОРА? Непонимающий
409  Qt / Установка, сборка, отладка, тестирование / Re: Проблема перехода VC6 -> VC2005 : Июль 31, 2008, 15:08
Не нашел Непонимающий

Нашел
http://prog.org.ru/forum/index.php/topic,3014.0.html
410  Qt / Установка, сборка, отладка, тестирование / Проблема перехода VC6 -> VC2005 : Июль 31, 2008, 14:49
Пока компилировал под VC6, приложение запускалось ка компе без установленного VC.
Перешел на VC2005, и теперь имею сообщение
Код:
Приложение не было запущено, поскольку оно некорректно настроено. 
Повторная установка приложения может решить данную проблему.
Что нужно делать?
411  Qt / Пользовательский интерфейс (GUI) / Re: Проблемма с фильтром событий QT3.3.8 : Июль 28, 2008, 17:17
Попробую
412  Qt / Пользовательский интерфейс (GUI) / Re: Проблемма с фильтром событий QT3.3.8 : Июль 25, 2008, 20:53
Да Непонимающий

А вот событие MouseEvent - НЕТ Злой
413  Qt / Пользовательский интерфейс (GUI) / Re: Проблемма с фильтром событий QT3.3.8 : Июль 25, 2008, 20:30
А если переписать нижеследующее
Код:
bool QTable::eventFilter( QObject *o, QEvent *e )
{
    QWidget *editorWidget = cellWidget( editRow, editCol );
    switch ( e->type() ) {
    case QEvent::KeyPress: {
QTableItem *itm = item( curRow, curCol );
          int editRow = this->editRow;
          int editCol = this->editCol;
          if ((d->hasRowSpan || d->hasColSpan) && !editorWidget) {
              if (QTableItem *eitm = item(editRow, editCol)) {
                  editRow = eitm->row();
                  editCol = eitm->col();
                  editorWidget = cellWidget(editRow, editCol);
              }
          }
if ( isEditing() && editorWidget && o == editorWidget ) {
    itm = item( editRow, editCol );
    QKeyEvent *ke = (QKeyEvent*)e;
    if ( ke->key() == Key_Escape ) {
if ( !itm || itm->editType() == QTableItem::OnTyping )
    endEdit( editRow, editCol, FALSE, edMode != Editing );
return TRUE;
    }

    if ( ( ke->state() == NoButton || ke->state() == Keypad )
&& ( ke->key() == Key_Return || ke->key() == Key_Enter ) ) {
if ( !itm || itm->editType() == QTableItem::OnTyping )
    endEdit( editRow, editCol, TRUE, edMode != Editing );
activateNextCell(); //+++++++ это убрать ++++++++++++  НЕ БУДЕТ ПЕРЕХОДА НА ДРУГУЮ КЛЕТКУ?
return TRUE;
    }

    if ( ke->key() == Key_Tab || ke->key() == Key_BackTab ) {
if ( ke->state() & Qt::ControlButton )
    return FALSE;
if ( !itm || itm->editType() == QTableItem::OnTyping )
    endEdit( editRow, editCol, TRUE, edMode != Editing );
if ( (ke->key() == Key_Tab) && !(ke->state() & ShiftButton) ) {
    if ( currentColumn() >= numCols() - 1 )
return TRUE;
    int cc  = QMIN( numCols() - 1, currentColumn() + 1 );
    while ( cc < numCols() ) {
QTableItem *i = item( currentRow(), cc );
if ( !d->hiddenCols.find( cc ) && !isColumnReadOnly( cc ) && (!i || i->isEnabled()) )
    break;
++cc;
    }
    setCurrentCell( currentRow(), cc );
} else { // Key_BackTab
    if ( currentColumn() == 0 )
return TRUE;
    int cc  = QMAX( 0, currentColumn() - 1 );
    while ( cc >= 0 ) {
QTableItem *i = item( currentRow(), cc );
if ( !d->hiddenCols.find( cc ) && !isColumnReadOnly( cc ) && (!i || i->isEnabled()) )
    break;
--cc;
    }
    setCurrentCell( currentRow(), cc );
}
itm = item( curRow, curCol );
if ( beginEdit( curRow, curCol, FALSE ) )
    setEditMode( Editing, curRow, curCol );
return TRUE;
    }

    if ( ( edMode == Replacing ||
   itm && itm->editType() == QTableItem::WhenCurrent ) &&
( ke->key() == Key_Up || ke->key() == Key_Prior ||
   ke->key() == Key_Home || ke->key() == Key_Down ||
   ke->key() == Key_Next || ke->key() == Key_End ||
   ke->key() == Key_Left || ke->key() == Key_Right ) ) {
if ( !itm || itm->editType() == QTableItem::OnTyping ) {
    endEdit( editRow, editCol, TRUE, edMode != Editing );
}
keyPressEvent( ke );
return TRUE;
    }
} else {
    QObjectList *l = viewport()->queryList( "QWidget" );
    if ( l && l->find( o ) != -1 ) {
                delete l;
QKeyEvent *ke = (QKeyEvent*)e;
if ( ( ke->state() & ControlButton ) == ControlButton ||
     ( ke->key() != Key_Left && ke->key() != Key_Right &&
       ke->key() != Key_Up && ke->key() != Key_Down &&
       ke->key() != Key_Prior && ke->key() != Key_Next &&
       ke->key() != Key_Home && ke->key() != Key_End ) )
    return FALSE;
keyPressEvent( (QKeyEvent*)e );
return TRUE;
    }
    delete l;
}

} break;
    case QEvent::FocusOut:
if ( isEditing() && editorWidget && o == editorWidget && ( (QFocusEvent*)e )->reason() != QFocusEvent::Popup ) {
    QTableItem *itm = item( editRow, editCol );
    if ( !itm || itm->editType() == QTableItem::OnTyping ) {
endEdit( editRow, editCol, TRUE, edMode != Editing );
return TRUE;
    }
}
break;
#ifndef QT_NO_WHEELEVENT
    case QEvent::Wheel:
if ( o == this || o == viewport() ) {
    QWheelEvent* we = (QWheelEvent*)e;
    scrollBy( 0, -we->delta() );
    we->accept();
    return TRUE;
}
#endif
    default:
break;
    }

    return QScrollView::eventFilter( o, e );
}

414  Qt / Пользовательский интерфейс (GUI) / Re: Проблемма с фильтром событий QT3.3.8 : Июль 25, 2008, 20:24
Создание ячейки таблицы
Код:
			TValidatorTableItem* pItem;
pItem= new TValidatorTableItem(aTable,QTableItem::Always);
pItem->setValidator(new QDoubleValidator(-9,9,3,NULL));
pItem->installEventFilter(new KeyFilter(pItem));
aTable->setItem(j,i,pItem);

Фильтр тот же.
Работает, фильтр отлавливает нажатие Enter и Return
415  Qt / Пользовательский интерфейс (GUI) / Re: Проблемма с фильтром событий QT3.3.8 : Июль 25, 2008, 17:53
В столбцах таблицы, где используются поля с TValidatorTableItem, все прекрасно срабатывает.

А что это за класс TValidatorTableItem? Можно глянуть его код?

Код:
// описание
class TValidatorTableItem : public QTableItem , public QObject
{
public:
    TValidatorTableItem(QTable* table, EditType et );
TValidatorTableItem(QTable* table, EditType et, QValidator* pValidator);
TValidatorTableItem(QTable* table, EditType et, const QString& text );
TValidatorTableItem(QTable* table, EditType et, const QString& text, QValidator* pValidator);
virtual ~TValidatorTableItem();

virtual QWidget * createEditor() const;
QValidator* validator()const { return m_pValidator; };
void setValidator(QValidator* pValidator);


private:
QValidator* m_pValidator;
QLineEdit* m_pEdit;
};


// реализация
TValidatorTableItem::TValidatorTableItem(QTable* table, EditType et)
: QTableItem(table, et), m_pValidator(NULL), m_pEdit(NULL)
{
}

TValidatorTableItem::TValidatorTableItem(QTable* table, EditType et, QValidator* pValidator)
: QTableItem(table, et), m_pValidator(NULL), m_pEdit(NULL)
{
setValidator(pValidator);
}

TValidatorTableItem::TValidatorTableItem(QTable* table, EditType et, const QString& text)
: QTableItem(table, et, text), m_pValidator(NULL), m_pEdit(NULL)
{
}

TValidatorTableItem::TValidatorTableItem(QTable* table, EditType et, const QString& text, QValidator* pValidator)
: QTableItem(table, et, text), m_pValidator(NULL), m_pEdit(NULL)
{
setValidator(pValidator);
}

void TValidatorTableItem::setValidator(QValidator* pValidator)
{
    if (NULL != m_pValidator) delete m_pValidator;
    m_pValidator = pValidator;
if (NULL != m_pEdit) m_pEdit->setValidator(m_pValidator);
QString content = text();
if (NULL != m_pValidator)
{
int iPos = 0;
if (QValidator::Invalid == m_pValidator->validate(content, iPos)) setText("");

}
}

QWidget* TValidatorTableItem::createEditor() const
{
TValidatorTableItem* pItem = (TValidatorTableItem*)(this);
pItem->m_pEdit = (QLineEdit*)(QTableItem::createEditor());
if (NULL != m_pEdit)
{
if (NULL != m_pValidator) m_pEdit->setValidator(m_pValidator);
}
return m_pEdit;
}


TValidatorTableItem::~TValidatorTableItem()
{
setValidator(NULL);
}

Это я взял где-то на ФОРУМЕ
416  Qt / Пользовательский интерфейс (GUI) / Re: Проблемма с фильтром событий QT3.3.8 : Июль 25, 2008, 17:29
Если вешаю фильтр на QLineEdit, то он замечательно работает....
Неужели никто не подскажет куда копать?
417  Qt / Базы данных / Re: Проблема с кодировкой в PostgreSQL 7.0.2 : Июль 22, 2008, 21:34
Попробуй делать в кодировке UTF8. Будет нормально всегда Показает язык
418  Qt / Пользовательский интерфейс (GUI) / Re: Проблемма с фильтром событий QT3.3.8 : Июль 21, 2008, 20:41
В столбцах таблицы, где используются поля с TValidatorTableItem, все прекрасно срабатывает.
QComboTableItem прямо использовать не получается, т.к. ему метод installEventFilter не доступен.
Пришлось его переопределить, добавив в предки QObject

419  Qt / Пользовательский интерфейс (GUI) / Проблемма с фильтром событий QT3.3.8 : Июль 21, 2008, 11:41
В таблице есть столбец Combobox

Код:
			myTQComboTableItem* paItem;
paItem= new myTQComboTableItem(aTable,cEa,FALSE);
                paItem->setEditable(TRUE);
paItem->setCurrentItem(0);
paItem->installEventFilter(new KeyFilter(paItem));
fActivePusk->aTable->setItem(j,i,paItem);

Создан фильтр

Код:
bool KeyFilter::eventFilter(QObject* pObj,QEvent* pe)
{
if ( pe->type() == QEvent::KeyPress )
{
            QKeyEvent *k = (QKeyEvent *)pe;
int i=k->key();
if ((k->key()==Key_Enter) || (k->key()==Key_Return))
{
    QMessageBox::information( 0, "Попали");
                    return TRUE;
}
else return FALSE;
       }
else  return FALSE;
}

Цель - после завершения редактирования - оставить указатель на той же ячейке...
Однако - фильтр управления не получает...
Где я неправ?

Код:
// h файл
class myTQComboTableItem : public QComboTableItem, public QObject
{
public:
    myTQComboTableItem(QTable * table, const QStringList & list, bool editable);
};

class KeyFilter : public QObject
{
Q_OBJECT
protected:
virtual bool eventFilter(QObject*,QEvent*);
public:
KeyFilter(QObject* pObj=0, const char* pszName=0);
};

// реализация
myTQComboTableItem::myTQComboTableItem( QTable * table, const QStringList & list, bool editable = FALSE )
   :QComboTableItem ( table, list, editable)
{
}
420  Qt / Общие вопросы / Re: Помогите с маской для Validator : Июль 03, 2008, 15:30
Мешает недостаток знаний и опыта.
Вариант

QRegExp rx("[-+]{0,1}[0-1][0-9][0-9] [0-5][0-9] [0-5][0-9]");

почти устраивает. Знак теперь не обязателен...
Почти, потому, что при вводе не работают навигационные клавиши...
Это как нибудь лечится?
Страниц: 1 ... 26 27 [28] 29 30

Страница сгенерирована за 0.106 секунд. Запросов: 23.