• 6518阅读
  • 9回复

[提问]QT SIGSEGV问题求助(新手) [复制链接]

上一主题 下一主题
离线火星科技
 
只看楼主 倒序阅读 楼主  发表于: 2012-03-05
代码如下:
1.pro:
#-------------------------------------------------
#
# Project created by QtCreator 2012-03-04T17:00:13
#
#-------------------------------------------------

QT       += core gui

TARGET = 1
TEMPLATE = app


SOURCES += main.cpp\
        gotocelldialog.cpp

HEADERS  += gotocelldialog.h

FORMS    += gotocelldialog.ui
-------------------------------------
gotocelldialog.h:
#ifndef GOTOCELLDIALOG_H
#define GOTOCELLDIALOG_H

#include <QDialog>
#include <ui_gotocelldialog.h>

namespace Ui {
    class GoToCellDialog;
}

class GoToCellDialog : public QDialog, public Ui::GoToCellDialog
{
    Q_OBJECT

public:
    explicit GoToCellDialog(QWidget *parent = 0);
    ~GoToCellDialog();


private slots:
    void on_lineEdit_textChanged();

private:
    Ui::GoToCellDialog *ui;
};

#endif // GOTOCELLDIALOG_H

----------------------------------
gotocelldialog.cpp:
#include <QtGui>
#include "gotocelldialog.h"
#include "ui_gotocelldialog.h"

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


}

void GoToCellDialog::on_lineEdit_textChanged()
{
    okButton->setEnabled("lineEdit->hasAcceptableInput()");//////////////////////////////////错误在此行
}


GoToCellDialog::~GoToCellDialog()
{
    delete ui;
}
----------------------
main.cpp:
#include <QtGui/QApplication>
#include "gotocelldialog.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    GoToCellDialog *dialog = new GoToCellDialog;
    dialog->show();

    return a.exec();
}

--------------------------
gotocelldialog.ui

---------------------------
错误形式:

能够运行,但是在lineEdit中输入一个字符就意外退出并弹出此对话框
离线dxfans

只看该作者 1楼 发表于: 2012-03-05
okButton->setEnabled("lineEdit->hasAcceptableInput()");
这个语句有两个问题:
1、okButton不是GoToCellDialog的成员,是Ui::GoToCellDialog的成员
2、setEnabled函数使用错误;参数为bool值,不要使用双引号

离线coldsnow
只看该作者 2楼 发表于: 2012-03-05
void QLayout::setEnabled ( bool enable )
LS正解!
离线火星科技
只看该作者 3楼 发表于: 2012-03-05
回 1楼(dxfans) 的帖子
太感谢了!!!你帮我大忙了
离线火星科技
只看该作者 4楼 发表于: 2012-03-05
回 1楼(dxfans) 的帖子
刚才试过了,还是不行,不知到哪里有问题,错误形式和之前一样
我把那行代码改成了:
void GoToCellDialog::on_lineEdit_textChanged()
{
    Ui::GoToCellDialog::okButton->setEnabled(Ui::GoToCellDialog::lineEdit->hasAcceptableInput());
}
对吗?
离线火星科技
只看该作者 5楼 发表于: 2012-03-05
回 2楼(coldsnow) 的帖子
还是不对= = 大侠求助
离线jdwx

只看该作者 6楼 发表于: 2012-03-05
回 5楼(火星科技) 的帖子
你的写法挺有特色。试试下面的写法。
void GoToCellDialog::on_lineEdit_textChanged()
{
    ui->okButton->setEnabled(ui->lineEdit->hasAcceptableInput());
}
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线火星科技
只看该作者 7楼 发表于: 2012-03-05
回 6楼(jdwx) 的帖子
行了!谢谢了大侠。但我不明白我的写法为什么错= =
离线dxfans

只看该作者 8楼 发表于: 2012-03-05
回 7楼(火星科技) 的帖子
类成员之间的关系没弄明白。。
离线jdwx

只看该作者 9楼 发表于: 2012-03-05
买本C++基础的书看看。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
快速回复
限100 字节
 
上一个 下一个