我爲Qt中的練習製作了以下程序。當我單擊Listwidget中的項目時,我的程序崩潰,以便該項目的行號成爲Listwidget_2中的項目。這是代碼。 MainWindow.h與Qt IDE生成的相同(不做任何更改,所有函數都是預定義的,已經在.cpp文件中使用過)。如果我在程序中發現內存泄漏,請通知我,因爲我是初學者。Qt程序錯誤
感謝您的幫助!
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QTextStream>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
noofitems=0;
files.setFileName("E:/filev.txt");
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionDelete_Item_triggered()
{
qDeleteAll(ui->listWidget->selectedItems());
}
void MainWindow::on_okbutton_clicked()
{
QListWidgetItem *item=new QListWidgetItem;
item->setText(ui->lineEdit->text());
ui->listWidget->addItem(item);
noofitems++;
writefile();
}
void MainWindow::writefile()
{
QFile files("E:/legitfile.txt");
if(files.exists())
{
if(!files.open(QFile::Append | QFile::Text))
{
QMessageBox::warning(this,"File Access!!!","The File containing data of the Items and Comments can't be acessed",QMessageBox::Ok);
}
}else
if(!files.open(QFile::WriteOnly | QFile::Text))
{
QMessageBox::warning(this,"File Access!!!","The File containing data of the Items and Comments can't be acessed",QMessageBox::Ok);
}
QTextStream out(&files);
out<< noofitems<<',';
files.flush();
files.close();
}
程序崩潰時,下列功能被稱爲
void MainWindow::on_listWidget_itemClicked(QListWidgetItem *item)
{
QListWidgetItem *itm=new QListWidgetItem;
itm->setText((char*)(ui->listWidget->currentRow()));
ui->listWidget_2->addItem(itm);
}
您應該添加調試輸出以查看它在哪一行崩潰。 – hochl 2012-03-01 16:22:18
我如何在通知的程序中做到這一點。我嘗試過,但程序不會編譯 – scorpion 2012-03-01 16:25:16
添加一個包含'#include'然後做例如'qDebug()<<「point 1」;','qDebug()<<「point 2」; '圍繞你的線路來獲得調試輸出。或使用一個IDE(如QtCreator),它允許一步一步調試 –
2012-03-01 16:32:19