Название: Не получается маленькая программа на основе TextEdit Отправлено: ussed от Август 31, 2014, 14:09 В текстовое поле из clipboard помещается текст,
в нем все буквы 'a' поменять на буквы 'b' Код: //maiwindow.h Название: Re: Не получается маленькая программа на основе TextEdit Отправлено: Bepec от Август 31, 2014, 14:18 Это печально. Но раз это факт, а не вопрос, то просто пройду мимо :)
PS оформляем код в тег кнопкой "#" на панельке. update: Прекрасно, уже красивее. А теперь осталось добавить вопрос / просьбу/ обсуждение. Привести проблему. Если есть ошибки, привести полный текст ошибки. update_2: теперь, в вышеприведённом коде, оформленном нормально я сразу вижу ошибку. Но вышенаписанное всё же сделайте. Вы же хотите, чтоб вам помогали :) Ошибка у вас в том, что в Код: if (buf.at(i) == '1') вы присваиваете массиву '2', а не элементу. Название: Re: Не получается маленькая программа на основе TextEdit Отправлено: ussed от Август 31, 2014, 20:30 Посьба помочь решить задачу!
Конечно buf='2'; так в исходном коде. но при переносе кода в '#' пропали квадратные скобки . При построении никаких ошибок не показано. Самое главное OS Archlinux(64),Qt 5.3; При помещении тестовой строки в окно ,не происходит ожидаемой замены. Наставление для новичков настраивает на лаконичность. Название: Re: Не получается маленькая программа на основе TextEdit Отправлено: Bepec от Август 31, 2014, 20:42 Тут проблема в другом, хотя и эту решили :)
Концепция проста - у вас в buf ничего нет. И не было. Вы его не заполняете. QPlainTextEdit'у в конструкторе передаётся строка, которую он помещает В себя и потом напрочь о ней забывает. В результате у вас при запуске buf пуст более, чем полностью. Что делать? (псс: делаю скидку на 1 тему, так сказать Welcome) ps счас накропаю рабочий проект, 5 минут. Название: Re: Не получается маленькая программа на основе TextEdit Отправлено: Bepec от Август 31, 2014, 20:55 Ошибки -
непонимание работы QPlainTextEdit и неправильное соединение connect(textEdit->document(),SIGNAL(textChanged()),this,SLOT(myslot())); Что ещё? Ещё не учтено зацикливание. При изменении текста будет испускаться сигнал изменения и вызываться слот, который будет изменять текст и будет испускаться сигнал изменения и вызываться слот, который будет изменять текст и будет испускаться сигнал изменения и вызываться слот, который будет изменять текст и будет испускаться сигнал изменения и вызываться слот, который будет изменять текст и... Ну и так до переполнения и вылета :) Проблема решается стражем - boolean переменной, которая при работе слота блокируется и разблокируется в конце. h Код: #ifndef TESTPLAIN_H Код: #include "testplain.h" Название: Re: Не получается маленькая программа на основе TextEdit Отправлено: ussed от Август 31, 2014, 21:04 "Концепция проста - у вас в buf ничего нет. И не было. Вы его не заполняете."
Да ,но я же помещаю по"paste"(правая кнопка мыши) текст. Зацикливания по моему не должно быть,так как после первой замены уже ничего втексте не будет меняться. хотя согласен,один дополнительный не рабочий проход будет Спасибо за предложенное,надо осмыслить,завтра на работе попробую. Название: Re: Не получается маленькая программа на основе TextEdit Отправлено: Bepec от Август 31, 2014, 21:07 Вы не понимаете...
Чтобы заполнить массив надо сделать buf = У вас в коде где нибудь ДО момента замены оно встречается? Массив buf НЕ связан с QPlainTextEdit. QPlainTextEdit даже не знает о его существовании, ибо в конструкторе происходит неявная инициализация класса QString, которое превращает buf в локальную QString и помещает в QPlainTextEdit. PS Зацикливание будет. Но рано говорить об этом, вы ещё не видите как работают классы Qt( а точнее вообще не знаете :)) Название: Re: Не получается маленькая программа на основе TextEdit Отправлено: ussed от Сентябрь 01, 2014, 17:33 Спасибо,работает,только закоментировал "ui:..." он мне не нужен.
Название: Re: Не получается маленькая программа на основе TextEdit Отправлено: Bepec от Сентябрь 01, 2014, 18:06 На здоровье. Закомментив ui ничего не теряем, так что на здоровье :)
Название: Re: Не получается маленькая программа на основе TextEdit Отправлено: ussed от Сентябрь 17, 2014, 21:09 В принципе работает!
но есть вопросы. Если строку в mainwindow.h " work = true;"перенести на строку после "textEdit->setPlainText(content);" то задача вылетает.С точки зрения процедурного программирования этот перенос совершенно нейтральный. Код: #ifndef TESTPLAIN_H |