qt todoapp

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QListWidget>
#include <QListWidgetItem>
#include <QFile>
#include <QStandardPaths>
#include <QMessageBox>

QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_btnAdd_clicked();

    void on_btnRemove_clicked();

    void on_btnRemoveAll_clicked();

private:
    Ui::Widget *ui;

    QString path = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation) + "\\todoFile.txt";
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    this->setWindowTitle("Todo List App");

    QFile file(path);
    if(!file.open(QIODevice::ReadWrite)) {
        QMessageBox::information(0, "error", file.errorString());
    }

    QTextStream in(&file);
    while(!in.atEnd()) {
        QListWidgetItem* item = new QListWidgetItem(in.readLine(), ui->listWidget);
        ui->listWidget->addItem(item);
        item->setFlags(item->flags() | Qt::ItemIsEditable);
    }
}

Widget::~Widget()
{
    // write file
    QFile file(path);
    if(!file.open(QIODevice::WriteOnly)) {
        QMessageBox::information(0, "error", file.errorString());
    }
    QTextStream out(&file);
    for (int i=0; i< ui->listWidget->count(); i++) {
        out << ui->listWidget->item(i)->text() << Qt::endl;
    }
    file.close();

    delete ui;
}


void Widget::on_btnAdd_clicked()
{
    if(ui->lineEdit->text().isEmpty()) {
        return;
    }

    QListWidgetItem * item = new QListWidgetItem(ui->lineEdit->text(), ui-> listWidget);
    ui->listWidget->addItem(item);
    item->setFlags(item->flags() | Qt::ItemIsEditable);

    ui->lineEdit->clear();
    ui->lineEdit->setFocus();
}


void Widget::on_btnRemove_clicked()
{
    QListWidgetItem* item = ui->listWidget->takeItem(ui->listWidget->currentRow());
    delete item;
}


void Widget::on_btnRemoveAll_clicked()
{
    ui->listWidget->clear();
}


相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 12:14:05       4 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 12:14:05       5 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 12:14:05       4 阅读
  4. Python语言-面向对象

    2024-07-10 12:14:05       5 阅读

热门阅读

  1. 如何减少开发过程中的bug-数据库篇

    2024-07-10 12:14:05       9 阅读
  2. 驻场运维的前途在哪里,这里有金玉良言

    2024-07-10 12:14:05       9 阅读
  3. 认字之 刬

    2024-07-10 12:14:05       7 阅读
  4. lvs集群

    lvs集群

    2024-07-10 12:14:05      9 阅读
  5. AUTOSAR:汽车软件架构的未来

    2024-07-10 12:14:05       9 阅读
  6. 相机光学(二十九)——显色指数(Ra)

    2024-07-10 12:14:05       9 阅读
  7. 贪心算法合集一

    2024-07-10 12:14:05       8 阅读
  8. 索引知识总结

    2024-07-10 12:14:05       10 阅读
  9. Oracle怎么实现RSA加密解密

    2024-07-10 12:14:05       8 阅读