Здравствуйте, гость ( Вход | Регистрация )
Алексей1153 | Дата 6.5.2011, 19:20 |
Я не совсем чувствую грань когда следует в QT пользоватся динамической памятью а когда нет... речь не про Qt, а про C++ , кстати В каких случаях Куча актуальна будет? например, если бы был массив большого размера. Локальные переменный размещаются на стеке, а стек имеет ограниченный размер. Если стек переполнен, то программа в лучшем случае просто аварийно завершится. Также, для массивов с изменяемым размером. Контейнеры Qt и STL тоже внутри себя используют кучу для хранения данных. По последней причине, кстати, контейнеры можно спокойно использовать как локальные переменные, так как, по сути, "локальное" тело переменной - несколько указателей и счётчиков количества элементов. А данные лежат на куче |
|
fortero | Дата 6.5.2011, 3:43 |
об операторе new подробнее, чем любая книжка по C++ я рассказать не сумею. Если коротко - это работа с кучей, new выделяет память из кучи под переменную, delete возвращает. Автоматически вызываются конструктор и деструктор соответственно В данном случае наличие new/delete совершенно необязательно, так как автоматическая локальная переменная выполнит всё то же самое. Но если хочется, можно оставить и так, как у тебя )) В каких случаях Куча актуальна будет? Я не совсем чувствую грань когда следует в QT пользоватся динамической памятью а когда нет... |
|
Алексей1153 | Дата 5.5.2011, 20:42 |
об операторе new подробнее, чем любая книжка по C++ я рассказать не сумею. Если коротко - это работа с кучей, new выделяет память из кучи под переменную, delete возвращает. Автоматически вызываются конструктор и деструктор соответственно В данном случае наличие new/delete совершенно необязательно, так как автоматическая локальная переменная выполнит всё то же самое. Но если хочется, можно оставить и так, как у тебя )) |
|
fortero | Дата 5.5.2011, 1:08 |
1) волшебные цифры лучше заменить на мнемоники (Qt::Key_Return и Qt::Key_Enter) 2) new, по моему, тут не нужен (вернее, можно без кучи обойтись):
А если можно поподробней о new, просто у меня не совсем ещё сформировалось понимание когда он нужен а когда нет? Почему Вы считаете что тут он не нужен прокаментируйте пожалуйста. Спасибо за внимание! |
|
Алексей1153 | Дата 4.5.2011, 21:00 |
1) волшебные цифры лучше заменить на мнемоники (Qt::Key_Return и Qt::Key_Enter) 2) new, по моему, тут не нужен (вернее, можно без кучи обойтись):
|
|
fortero | Дата 2.5.2011, 22:01 |
Кажеться победил:
Silver47 покритекуйте, может что-то не так? |
|
fortero | Дата 2.5.2011, 19:49 |
Одна проблема, у меня не QTableView а QTableWidget, а функций индекс там нет... | |
silver47 | Дата 2.5.2011, 6:05 |
гм... Наверное будет работать тоже самое:
|
|
fortero | Дата 2.5.2011, 2:26 |
А ещё вопрос, а если мне надо по клавише Enter вызывать сигнал, как это организовать с клавишами я пока не работал ещё??? То есть мне нужно когда я стою на нужной строке и жму клавишу Enetr происходило действие... 1. Изменения которые необходимо внести в заголовочный файл того виджета, на котором таблица расположена:
2. Теперь создадим описанный нами метод:
16777220 и 16777221 - это коды двух клавиш Enter. Чтобы узнать какой код у кнопки, поставьте вывод qDebug() << pe; в самом начале метода. Для того, чтобы знать нажаты ли кнопки-модификаторы (Alt; Ctrl; Shift), нужно проверить вот такое вот условие:
Опять же, все тот же, Макс Шлее страница 259 Спасибо, это очень интересно, но а как мне в слот передать информацию о месте нахождения маркера, когда мышей я кликал то я использовал вот такой вариант:
А тут как быть, как узнать отмеченный маркер, причём последний, ведь случайно можно две строки выделить! Спасибо за внимание! |
|
silver47 | Дата 21.4.2011, 5:06 |
А ещё вопрос, а если мне надо по клавише Enter вызывать сигнал, как это организовать с клавишами я пока не работал ещё??? То есть мне нужно когда я стою на нужной строке и жму клавишу Enetr происходило действие... 1. Изменения которые необходимо внести в заголовочный файл того виджета, на котором таблица расположена:
2. Теперь создадим описанный нами метод:
16777220 и 16777221 - это коды двух клавиш Enter. Чтобы узнать какой код у кнопки, поставьте вывод qDebug() << pe; в самом начале метода. Для того, чтобы знать нажаты ли кнопки-модификаторы (Alt; Ctrl; Shift), нужно проверить вот такое вот условие:
Опять же, все тот же, Макс Шлее страница 259 |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 1:59 |