Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: onlifeboat от Март 13, 2017, 18:35



Название: Как привязать код для стека и очереди к кнопкам интерфейса
Отправлено: onlifeboat от Март 13, 2017, 18:35
Дали в университете задание:
Создать окно, с графическим интерфейсом, в котором будут кнопки и окошки. Приложение должно работать со стеком и очередью, причем каждое отдельно. Должно все выглядеть, как на картинке.

Есть код, который отвечает за работу с кнопками:

Код
C++ (Qt)
#include "widget.h"
#include "ui_widget.h"
#include <QListWidget>
#include <QApplication>
 
 
Widget::Widget(QWidget *parent) :
   QWidget(parent),
   ui(new Ui::Widget)
{
   ui->setupUi(this);
}
 
Widget::~Widget()
{
   delete ui;
}
int i=-1;
 
void Widget::on_pushButton_2_clicked()
{
 
   if(ui->radioButton->isChecked()){
   ui->listWidget->addItem(ui->textEdit->toPlainText());
   i++;
   }
 
   else if(ui->radioButton_2->isChecked()){
   ui->listWidget_2->addItem(ui->textEdit->toPlainText());
   i++;
   }
 
}
 

Но, как сделать так, чтобы числа вводились и выводились по принципу стека и очереди, понять не могу? :(
Препод не объясняет абсолютно ничего, ссылаясь на то, что все есть в гугле...


Название: Re: Как привязать код для стека и очереди к кнопкам интерфейса
Отправлено: gil9red от Март 13, 2017, 19:38
Используйте функции QListWidget addItem (http://doc.qt.io/qt-4.8/qlistwidget.html#addItem) и insertItem (http://doc.qt.io/qt-4.8/qlistwidget.html#insertItem) для добавления в конец и для добавления в начало
И функцию takeItem (http://doc.qt.io/qt-4.8/qlistwidget.html#takeItem) для удаления элемента из списка.


А так, если вспомнить школу / универ, то:
push всегда добавляет в конец через addItem для стека и очереди
а pop:
  • для стека удаляет первый элемент -- первый пришел, последний ушел
  • для очереди удаляет последний элемент -- первый пришел, первый ушел

вот же я опозорюсь, если перепутал :)

накидал пример (https://github.com/gil9red/SimplePyScripts/tree/master/stack_and_queue)