看别人的代码时,经常会出现编译输出这个“当执行构建步骤 'qmake'时”,
而没有任何东西输出。
解决:(1)尽量保证工程文件路径不为中文;
(2)还有一个原因可能是别人电脑运行时生成的.pro.user文件不匹配,删
除重新打开工程编译,此文件会进行重建。
还有一个关于连接动态库的问题,当时搞得比较烦,我想从文件debug下
的exe执行,进行调试,结果一打开就出现找不到动态库mingwm10.dll,网上下
下来放在工程目录,再运行会发现找不到libgcc_s_dw2-1.dll,一样的再下下来,
缺什么下什么就放在当前目录,后发现在找完Qtcored4.dll就出现不是缺少库的
原因了(可能是不兼容的影响)。当时还把这三个动态库放到了C:\Windows\System32中想着就不要总是打开一个工程就添加这些库,结果出现以前能执行通过的程
序不能执行了,就出现启动中....程序异常终止的错误,当时没发现可能是qtcored4.dll
这个库不兼容。
解决:其实在Qt安装完的文件里都会有这些动态库,要通过加入到系统的环
境变量,执行步骤打开计算机属性->高级系统设置->高级->环境变量->找到变
量path,把qt的动态库添加到这里,不是覆盖是添加,比如我的qt路径是E:\qt\Desktop\Qt\4.8.1\mingw\bin。
还可以在qt中添加,打开qt项目也有环境变量设置。这些问题都是指有界面的工程。
解决这些问题终于可以进行技术性的劳动了。
看了用qt写的一个基于udp的聊天室,涉及到界面的功能有保存聊天记录,
关闭和发送按钮,字体大型类型、颜色,聊天记录的删除等下面是关于槽函数
的代码,可以从中受启发。
private slots://槽函数
void on_textUnderline_clicked(bool checked);
void on_clear_clicked();
void on_save_clicked();
void on_textcolor_clicked();
void on_textitalic_clicked(bool checked);
void on_textbold_clicked(bool checked);
void on_fontComboBox_currentFontChanged(QFont f);
void on_fontsizecomboBox_currentIndexChanged(QString );
void on_close_clicked();
void on_sendfile_clicked();
void on_send_clicked();
void Widget::on_send_clicked()
{
sendMessage(Message);
}
void Widget::on_sendfile_clicked()
{
if(ui->tableWidget->selectedItems().isEmpty())
{
QMessageBox::warning(0,tr("选择用户"),tr("请先从用户列表选择要传送的用户!"),QMessageBox::Ok);
return;
}
server->show();
server->initServer();
}
//关闭
void Widget::on_close_clicked()
{
this->close();
}
bool Widget::eventFilter(QObject *target, QEvent *event)
{
if(target == ui->textEdit)
{
if(event->type() == QEvent::KeyPress)
{
QKeyEvent *k = static_cast<QKeyEvent *>(event);
if(k->key() == Qt::Key_Return)
{
on_send_clicked();
return true;
}
}
}
return QWidget::eventFilter(target,event);
}
//字体设置
void Widget::on_fontComboBox_currentFontChanged(QFont f)//字体设置
{
ui->textEdit->setCurrentFont(f);
ui->textEdit->setFocus();
}
//字体大小
void Widget::on_fontsizecomboBox_currentIndexChanged(QString size)
{
ui->textEdit->setFontPointSize(size.toDouble());
ui->textEdit->setFocus();
}
//粗体设置
void Widget::on_textbold_clicked(bool checked)
{
if(checked)
ui->textEdit->setFontWeight(QFont::Bold);
else
ui->textEdit->setFontWeight(QFont::Normal);
ui->textEdit->setFocus();
}
//斜体设置
void Widget::on_textitalic_clicked(bool checked)
{
ui->textEdit->setFontItalic(checked);
ui->textEdit->setFocus();
}
//下划线设置
void Widget::on_textUnderline_clicked(bool checked)
{
ui->textEdit->setFontUnderline(checked);
ui->textEdit->setFocus();
}
//文本颜色
void Widget::on_textcolor_clicked()
{
color = QColorDialog::getColor(color,this);
if(color.isValid())
{
ui->textEdit->setTextColor(color);
ui->textEdit->setFocus();
}
}
//保存聊天记录
void Widget::on_save_clicked()
{
if(ui->textBrowser->document()->isEmpty())
QMessageBox::warning(0,tr("警告"),tr("聊天记录为空,无法保存!"),QMessageBox::Ok);
else
{
//获得文件名
QString fileName = QFileDialog::getSaveFileName(this,tr("保存聊天记录"),tr("聊天记录"),tr("文本(*.txt);;All File(*.*)"));
if(!fileName.isEmpty())
saveFile(fileName);
}
}
//保存文件
bool Widget::saveFile(const QString &fileName)
{
QFile file(fileName);
if(!file.open(QFile::WriteOnly | QFile::Text))
{
QMessageBox::warning(this,tr("保存文件"),
tr("无法保存文件 %1:\n %2").arg(fileName)
.arg(file.errorString()));
return false;
}
QTextStream out(&file);
out << ui->textBrowser->toPlainText();
return true;
}
//清空聊天记录
void Widget::on_clear_clicked()
{
ui->textBrowser->clear();
}