⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 addressbook.cpp

📁 qt3.8开发的例子, 做linux下qt编程可以参考
💻 CPP
字号:
#include <qaction.h>#include <qdir.h>#include <qlistview.h>#include <qmenubar.h>#include <qpopupmenu.h>#include <qtextstream.h>#include "abitem.h"#include "addressbook.h"#include "editdialog.h"AddressBook::AddressBook(QWidget *parent, const char *name)    : QMainWindow(parent, name){    setCaption(tr("Address Book"));    listView = new QListView(this);    listView->addColumn(tr("Name"));    listView->addColumn(tr("Address"));    listView->addColumn(tr("Phone Number"));    listView->setAllColumnsShowFocus(true);    listView->setResizeMode(QListView::LastColumn);    setCentralWidget(listView);    createActions();    createMenus();    QFile file(QDir::homeDirPath() + "/addressbook.txt");    if (file.open(IO_ReadOnly | IO_Translate)) {        QTextStream input(&file);        input.setEncoding(QTextStream::UnicodeUTF8);        while (!input.eof()) {            ABItem *entry = new ABItem(listView);            entry->setContact(input.readLine());            entry->setAddress(input.readLine());            entry->setPhoneNumber(input.readLine());            input.readLine();        }    }}AddressBook::~AddressBook(){    QFile file(QDir::homeDirPath() + "/addressbook.txt");    if (file.open(IO_WriteOnly | IO_Translate)) {        QTextStream output(&file);        output.setEncoding(QTextStream::UnicodeUTF8);        QListViewItemIterator it(listView);        while (it.current()) {            ABItem *entry = (ABItem*)it.current();            output << entry->contact() << endl;            output << entry->address() << endl;            output << entry->phoneNumber() << endl;            output << endl;            ++it;        }    }}void AddressBook::createActions(){    exitAct = new QAction(tr("E&xit"), tr("Ctrl+Q"), this);    exitAct->setStatusTip(tr("Exit the application"));    connect(exitAct, SIGNAL(activated()), this, SLOT(close()));    addEntryAct = new QAction(tr("&Add Entry..."), tr("Ins"), this);    addEntryAct->setStatusTip(tr("Add a new entry to the address "                                 "book"));    connect(addEntryAct, SIGNAL(activated()),            this, SLOT(addEntry()));    editEntryAct = new QAction(tr("&Edit Entry..."), tr("F2"), this);    editEntryAct->setStatusTip(tr("Edit the current address book "                                  "entry"));    connect(editEntryAct, SIGNAL(activated()),            this, SLOT(editEntry()));    deleteEntryAct = new QAction(tr("&Delete Entry"), tr("Del"),                                 this);    deleteEntryAct->setStatusTip(tr("Delete the current address "                                    "book entry"));    connect(deleteEntryAct, SIGNAL(activated()),            this, SLOT(deleteEntry()));}void AddressBook::createMenus(){    fileMenu = new QPopupMenu(this);    exitAct->addTo(fileMenu);    editMenu = new QPopupMenu(this);    addEntryAct->addTo(editMenu);    editEntryAct->addTo(editMenu);    deleteEntryAct->addTo(editMenu);    menuBar()->insertItem(tr("&File"), fileMenu);    menuBar()->insertItem(tr("&Edit"), editMenu);}ABItem *AddressBook::createEntry(const QString &contact){    ABItem *item = new ABItem(listView);    item->setContact(contact);    return item;}ABItem *AddressBook::findEntry(const QString &contact) const{    return (ABItem *)listView->findItem(contact, 0);}ABItem *AddressBook::entryAt(int index) const{    if (index > listView->childCount())        return 0;    QListViewItemIterator it(listView);    it += index - 1;    return (ABItem *)it.current();}int AddressBook::count() const{    return listView->childCount();}void AddressBook::addEntry(){    EditDialog dialog(listView, this);    dialog.exec();}void AddressBook::editEntry(){    ABItem *item = (ABItem *)listView->currentItem();    if (item) {        EditDialog dialog(item, this);        dialog.exec();    }}void AddressBook::deleteEntry(){    delete listView->currentItem();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -