QT: пользователь выбирает действия - PullRequest
2 голосов
/ 01 июля 2010

http://img804.imageshack.us/img804/4258/uisketch.png

Здравствуйте, я пытаюсь создать пользовательский интерфейс, как на скетче (предотвращение спама заставило меня публиковать только ссылку). Какой должен быть тип коробки? QListView (коробки должны быть прокручиваемыми)? Я пытался это сделать, но мне не удалось добавить какое-либо действие в список «доступных действий». Я пытался играть с QAction, но, похоже, ничего не работает. На самом деле действия не должны ничего делать, так как выбранные и перенесенные на другие номера действий окна должны записываться только в текстовый файл. Мне нужна помощь в:

  1. Функция записи, которая будет выполняться при запуске программы (которая «заполнит» список доступных действий.
  2. Написание функции, которая будет выполняться, когда пользователь подтвердит, что он сделал свой выбор (в текстовый файл должны быть записаны только номера действий в порядке, выбранном пользователем)

Полагаю, я мог бы сам написать функцию обработчика кнопок; Заранее большое спасибо и извините, если мой английский плохой.

РЕДАКТИРОВАТЬ: все действие происходит в виджете со вкладкой

Ответы [ 3 ]

2 голосов
/ 01 июля 2010

Используйте два QListWidgets , заполните левый, используя QListWidget::addItem, подключите сигнал clicked () вашего QPushButton к выбранному вами слоту, который может выглядеть примерно так:

void myButtonClicked()
{
    // retrieve currently selected item
    QListWidgetItem *current = availableActionsList->currentItem();
    if(!current)
        return;
    // remove item from available actions and add it to selected actions
    selectedActionsList->addItem(availableActionsList->takeItem(current));
}

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ: Если вы не хотите удалять элемент, вы можете просто заменить последние две строки на selectedActionsList->addItem(current->text());

0 голосов
/ 01 июля 2010

Как написано в документации , QListView является частью структуры модель / представление. Убедитесь, что вы прикрепили модель к представлению и добавили к ней действие.

Если вы не хотите использовать инфраструктуру модель / представление, вы можете использовать класс QListWidget вместо QListView.

0 голосов
/ 01 июля 2010

Это один из способов использования QListWidget.

Ответ на ваш первый вопрос:

В конструкторе вашего виджета / диалога, содержащего ваш QListWidget, добавьте элементычерез

void QListWidget::addItems ( const QStringList & labels )

или

void QListWidget::addItem ( const QString & label )

, в зависимости от того, что требуется.

Для второго вы можете использовать следующую функцию для получения выбранных элементов.

QList<QListWidgetItem *> QListWidget::selectedItems () const

Затем в clicked() сигнале Стрелка QPushbutton ( Я предполагаю ), добавить выбранные элементы в другие QListWidget с использованием функций, указанных для первого ответа.

Надеюсь, это поможет ..

...