![]() |
|
|
![]()
|
|
| anatox91 |
|
||||||
![]() программист-самоучка ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 12.1.2008 Где: ++Украина.Крым++ Репутация: нет Всего: 13 |
и снова здрасьте!
есть класс диалогового окна, сделанный для главного окна(класс, унаследованный от QMainWindow), и в нем надо при нажатии кнопки проводить поиск в объекте класса QTextEdit, находящемся в главном окне, но при компиляции выводит ошибки: ![]() вот определение объекта: MainWindow.h
вот слот поиска в FindDialog.cpp:
а это слот вызывающийся при выборе пункта меню в главном окне: MainWindow.cpp
подскажите пожалуйста в чем ошибка? Это сообщение отредактировал(а) anatox91 - 9.4.2008, 11:28 -------------------- The code is the design © Sony VAIO VGN-FW480J ![]() |
||||||
|
|||||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
В способе доступа к указателю, через не статический объект textArea. Либо используй прямой указатель на MainWindow, либо делай указатель textArea глобальным/статическим для всех классов типа MainWindow, правда это будет глупостью. Сделай френдом класс MainWindow в классе FindDialog или передавай указатель на MainWindow в конструкторе. Это сообщение отредактировал(а) SABROG - 9.4.2008, 14:31 |
|||
|
||||
| Mephisto |
|
||||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: 1 Всего: 34 |
У FindDialog делаешь сигнал к примеру FindNext.
Далее просто:
Когда нужно именно искать из FindDialog, в нем пишешь код:
Это сообщение отредактировал(а) Mephisto - 9.4.2008, 14:44 |
||||
|
|||||
| anatox91 |
|
||||||||||
![]() программист-самоучка ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 12.1.2008 Где: ++Украина.Крым++ Репутация: нет Всего: 13 |
блин... я вконец запутался... помогите кто-нибудь...
в FindDialog.cpp я кроме конструктора сделал слот (вызывающийся после клика на кнопку в этом же классе)
в FindDialog.h сделал так
в MainWindow.h добавил
в MainWindow.срр :
компилятор пишет что не знает что такое lineFind и caseSensitivity (в двух последних приведенных мною функциях)... походу надо как-то передавать объект класса FindDialog в френд-функции... только я уже не соображаю как... Это сообщение отредактировал(а) anatox91 - 9.4.2008, 18:41 -------------------- The code is the design © Sony VAIO VGN-FW480J ![]() |
||||||||||
|
|||||||||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Френды хороши при использовании методов классов, которые не меняют внутреннего состояния объекта. Что-то типа функции перевода текста из одной кодировки в другую: QString & Utf8toAnsi(QString &), если эта функция приватна и находится в другом классе.
Без указателя на mainwindow не обойтись. В своих программах я передаю указатель на mainwindow в каждый класс как parent QObject'a.
|
|||
|
||||
| anatox91 |
|
|||
![]() программист-самоучка ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 12.1.2008 Где: ++Украина.Крым++ Репутация: нет Всего: 13 |
ты имел ввиду что при создании объекта-потомка(т.е. в конструкторе) оставить потомку указатель на базовый объект и через него уже творить все операции?
уррЯЯЯЯ!!! получилось!!! всем большое спасибо и по + Это сообщение отредактировал(а) anatox91 - 10.4.2008, 15:41 -------------------- The code is the design © Sony VAIO VGN-FW480J ![]() |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Нет, я не про наследование. Просто если есть главное окно, то в каждый класс, который использует компоненты главного окна надо передавать указатель в конструкторе класса или в метод.
Или вообще указатель сделать глобальным для всех объектов, где нибудь в файле с main(). Это сообщение отредактировал(а) SABROG - 10.4.2008, 15:39 |
|||
|
||||
| Mephisto |
|
||||||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: 1 Всего: 34 |
Вот что-то врое главной формы:
И собсвенно форма поиска:
Добавлено @ 15:56 за разметку извиняйте, писал в окошке форумном, тяжело форматировать. :( Могут быть и описки. Добавлено @ 15:56 Да, и обязательно сделать QMake! Это сообщение отредактировал(а) Mephisto - 10.4.2008, 16:52 |
||||||
|
|||||||
| anatox91 |
|
||||
![]() программист-самоучка ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 12.1.2008 Где: ++Украина.Крым++ Репутация: нет Всего: 13 |
с примером Mephisto тоже самое... всегда вызывается функция nothing() при поиске...
сделал в точности как Mephisto: FindDialog.h:
MainWindow.cpp
может я где-то в if-else инструкциях напутал?... мда.. походу точно где-то в инструкциях ошибка... потому что иногда находит то что нужно... Это сообщение отредактировал(а) anatox91 - 10.4.2008, 16:45 -------------------- The code is the design © Sony VAIO VGN-FW480J ![]() |
||||
|
|||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: 1 Всего: 34 |
У меня вот так вот работает:
anatox91, а ты курсор установил в начало текстового окошка? Потому как по умлочанию он только ищет в тексте после курсора! Чтоб в обратную сторону поискать нужно установить флаг соответствующий. |
|||
|
||||
| anatox91 |
|
|||
![]() программист-самоучка ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 12.1.2008 Где: ++Украина.Крым++ Репутация: нет Всего: 13 |
походу нет..
и кстати что делает вот это:
? Это сообщение отредактировал(а) anatox91 - 10.4.2008, 17:01 -------------------- The code is the design © Sony VAIO VGN-FW480J ![]() |
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: 1 Всего: 34 |
anatox91, у меня только один файл - main.cpp. Лень быол разносить по отдельным хидерам.
Чтобы скомпилилось, нужно так в конце написать. Ента сенкс Архимеду, подсказал что так мона. Мышкой ткнуть как минимум А вообще я бы сделал прямой поиск, в случае неудачи обратный. Т.е. поиск в два шага: 1) Ищешь что нужно, проверяешь резалт, если не нашел, то к шагу 2 2) Ищешь назад, проверяешь резалт, если не нашел, то таки ничего нет |
|||
|
||||
| SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
|
||||
|
|||||
| anatox91 |
|
|||
![]() программист-самоучка ![]() ![]() Профиль Группа: Участник Сообщений: 699 Регистрация: 12.1.2008 Где: ++Украина.Крым++ Репутация: нет Всего: 13 |
Mephisto, хорошо так и сделаю
SABROG, про QTextDocument::FindBackward я итак знал, а вот про мос спасибо, почитаю еще раз всем большое спасибо! -------------------- The code is the design © Sony VAIO VGN-FW480J ![]() |
|||
|
||||
| SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
|
||||
|
|||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |