| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 849 人关注过本帖
标题:不知道有没有人在,想请教一个关于QT代码的问题
只看楼主 加入收藏
c453413516
Rank: 1
等 级:新手上路
帖 子:16
专家分:4
注 册:2010-12-5
结帖率:80%
收藏
 问题点数:0 回复次数:2 
不知道有没有人在,想请教一个关于QT代码的问题
问题描述:这是书上的部分关键部分代码,我自己添加了一些重要的部分后,试着运行,编译通过,最后生成EXE文件,试着实际运行一下,结果:原本是按“add”键可以在两个输入框内输入文字,并且还有两个隐藏按键会显示出来,但是结果没有达到预期的效果,能否帮我检查一下到底是除了什么问题?谢谢了
以下是源代码:
头文件:
#ifndef MYNAME_H_
#define MYNAME_H_

#include <QWidget>
#include <QMap>

class QLineEdit;
class QTextEdit;
class QPushButton;
class QString;

class AddressBook : public QWidget
{
    Q_OBJECT
   
public:
    AddressBook(QWidget *parent = 0);
private slots:
    void addContact();
    void submitContact();
    void cancel();
private:
    QLineEdit *nameLine;
    QTextEdit *addressText;
    QPushButton *addButton;
    QPushButton *submitButton;
    QPushButton *cancelButton;
    QMap <QString,QString> contacts;
    QString oldName;
    QString oldAddress;
};

#endif

类的实现文件:
#include <QtGui>

#include "AddressBook.h"

AddressBook :: AddressBook(QWidget *parent):QWidget(parent)
{
    QLabel *nameLabel = new QLabel(tr("Name:"));
    nameLine = new QLineEdit;
    nameLine->setReadOnly(true);
    QLabel *addressLabel = new QLabel(tr("Address: "));
    addressText = new QTextEdit;
    addressText->setReadOnly(true);
    addButton = new QPushButton(tr("&Add"));
    addButton->show();
    submitButton = new QPushButton(tr("&Submit"));
    submitButton->hide();
    cancelButton = new QPushButton(tr("&Cancel"));
    cancelButton->hide();

    connect(addButton, SIGNAL(cliked()), this, SLOT(addContact()));
    connect(submitButton, SIGNAL(cliked()), this, SLOT(submitContact()));
    connect(cancelButton, SIGNAL(cliked()), this, SLOT(cancel()));

    QGridLayout *mainLayout = new QGridLayout;
    mainLayout->addWidget(nameLabel,0,0);
    mainLayout->addWidget(nameLine,0,1);
    mainLayout->addWidget(addressLabel,1,0,Qt::AlignTop);
    mainLayout->addWidget(addressText,1,1);
    QVBoxLayout *buttonLayout1 = new QVBoxLayout;
    buttonLayout1->addWidget(addButton,Qt::AlignTop);
    buttonLayout1->addWidget(submitButton);
    buttonLayout1->addWidget(cancelButton);
    buttonLayout1->addStretch();
    mainLayout->addLayout(buttonLayout1,1,2);
   
    setLayout(mainLayout);
    setWindowTitle(tr("Simple Address Book"));
}

void AddressBook::addContact()
{
    oldName = nameLine->text();
    oldAddress = addressText->toPlainText();

    nameLine->clear();
    addressText->clear();

    nameLine->setReadOnly(false);
    nameLine->setFocus(Qt::OtherFocusReason);
    addressText->setReadOnly(false);

    addButton->setEnabled(false);
    submitButton->show();
    cancelButton->show();
}

void AddressBook::submitContact()
{
    QString name = nameLine->text();
    QString address = addressText->toPlainText();

    if (name == " "||address == " ")
    {
        QMessageBox::information(this, tr("Empty Field"), tr("Please enter a name and address."));
        return;
    }
   
    if(!contacts.contains(name))
    {
        contacts.insert(name,address);
        QMessageBox::information(this, tr("Add Successful"), tr("\"%1\"has been added to your address book.").arg(name));
    }
   
   
    if (contacts.isEmpty())
    {
        nameLine->clear();
        addressText->clear();
    }

    nameLine->setReadOnly(true);
    addressText->setReadOnly(true);
    addButton->setEnabled(true);
    submitButton->hide();
    cancelButton->hide();
}

void AddressBook::cancel()
{
    nameLine->setText(oldName);
    nameLine->setReadOnly(true);

    addressText->setText(oldAddress);
    addressText->setReadOnly(true);

    addButton->setEnabled(true);
    submitButton->hide();
    cancelButton->hide();
}



main.cpp文件(个人觉得这个文件应该没有问题):
#include <QApplication>

#include "AddressBook.h"

int main(int argc, char *argv[])
{
    QApplication app(argc,argv);
   
    AddressBook *addressBook = new AddressBook;
    addressBook->show();

    return app.exec();   
}
搜索更多相关主题的帖子: include 输入文字 有没有人 public 源代码 
2011-08-24 12:18
myseemylife
Rank: 2
等 级:论坛游民
帖 子:100
专家分:58
注 册:2009-3-22
收藏
得分:0 
。。。。好多代码。。。。
button你用setVisible吧。。虽然show,hide也是调用visible、但是看着好别扭。
 AddressBook *addressBook = new AddressBook;
    addressBook->show();

有内存泄漏。、、、、、、给个this去构造。。。
其他的看不来了。。。

唔紸縡唔自己の鉎銘.................
2011-12-13 17:02
星魂流云
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-12-14
收藏
得分:0 
2011-12-14 11:50
快速回复:不知道有没有人在,想请教一个关于QT代码的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016298 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved