QT4.6.2 学习问题摘录

QT4.6.2 学习问题摘录


1. QT重写窗口关闭事件

xxx.h

protected:
    void closeEvent(QCloseEvent *e);

xxx.cpp

void chatForm::closeEvent(QCloseEvent *e)
{
    //关闭资源,更新数据库信息等
    this->close();
}


2. liunx下qt create中编辑代码时输入奇慢无比

估计是和QDeveloper是有冲突的,把QDeveloper删除后,代码输

入变得流畅。


3. splitter窗口后使用gridlayout布局窗口实现splitter窗口自

动缩放大小。

设定各个窗口缩放比例:
    ui->splitterH->setStretchFactor(0, 0);
    ui->splitterH->setStretchFactor(1, 1);
    ui->splitterV->setStretchFactor(0, 1);
    ui->splitterV->setStretchFactor(1, 0);

 

4. gridlayout布局后设定边框大小

ui->gridLayout->setContentsMargins(2, 2, 2, 6);

 

5. 父窗口的变量值通过子窗口构造函数传递进去

chatForm::chatForm(QString id, QString peerIp, QString

peerPort, QUdpSocket *udpSocket):ui(new Ui::chatForm)
{
    this->id = id;
    this->serverIp = peerIp;
    this->serverPort = peerPort;
    this->udpSocket = udpSocket;
    ui->setupUi(this);
}

 

6. 设定按钮为透明

    ui->regButton->setFlat(true);

 

7. 对话框设定是否为模态对话框

        regdialog = new RegDialog();
        regdialog->setModal(true);
        //regdialog->setModal(false);//默认值
        regdialog->setWindowTitle("test");
        //regdialog->setWindowIcon();
        regdialog->show();

 

8. 设定支持中文显示

 

注意使用tr()函数

 

#include <QTextcodec>
    //support chinese character set
    QTextCodec::setCodecForCStrings

(QTextCodec::codecForName("GB2312"));
    QTextCodec::setCodecForLocale

(QTextCodec::codecForName("GB2312"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName

("GB2312"));

 

9. 重写QSqlQueryModel中的函数自定义tableview显示方式

#include "mysqlquerymodel.h"
#include <QSqlQuery>

MySqlQueryModel::MySqlQueryModel()
{
}

QVariant MySqlQueryModel::data(const QModelIndex & index,

int role) const
{
    QVariant value = QSqlQueryModel::data(index, role);
   
    if (value.isValid() && role == Qt::DisplayRole &&

index.column() == 2)
    {
        value = (value.toInt() == 1 ? tr("在线") : tr("离

线"));
        return value;
    }

    else if (role == Qt::TextColorRole && index.column()

== 2)
    {
        return qVariantFromValue(QColor(Qt::red));
    }

    else return value;

}


10. 使用多线程处理TCP连接

在incomingConnection实现中开辟线程处理连接,

socketDescriptor作为线程构造函数的参数传入

//.h

#ifndef TCPSOCKSERVER_H
#define TCPSOCKSERVER_H

#include <QStringList>
#include <QTcpServer>

class TcpSockServer : public QTcpServer
{
    Q_OBJECT

public:
    TcpSockServer(QObject *parent = 0);

protected:
    void incomingConnection(int socketDescriptor);

private:

};

#endif // TCPSOCKSERVER_H


//.cpp

#include "tcpsockserver.h"
#include "tcpconthread.h"

TcpSockServer::TcpSockServer(QObject *parent)
     : QTcpServer(parent)
{
}


void TcpSockServer::incomingConnection(int

socketDescriptor)
{
    TcpConThread *thread = new TcpConThread

(socketDescriptor, this);
    connect(thread, SIGNAL(finished()), thread, SLOT

(deleteLater()));
    thread->start();
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的基于Qt 4.6.2的温度湿度折线图绘制示例代码: ```cpp #include <QtGui/QApplication> #include <QtGui/QWidget> #include <QtGui/QPainter> #include <QtCore/QList> #include <QtCore/QPointF> class TemperatureHumidityGraph : public QWidget { public: TemperatureHumidityGraph(QWidget *parent = 0) : QWidget(parent) {} protected: void paintEvent(QPaintEvent *) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.setPen(Qt::red); QList<QPointF> points; points << QPointF(50, 200) << QPointF(100, 150) << QPointF(150, 120) << QPointF(200, 100) << QPointF(250, 80) << QPointF(300, 70); // 绘制温度折线图 painter.drawPolyline(QPolygonF(points)); painter.setPen(Qt::blue); QList<QPointF> points2; points2 << QPointF(50, 150) << QPointF(100, 120) << QPointF(150, 100) << QPointF(200, 90) << QPointF(250, 80) << QPointF(300, 70); // 绘制湿度折线图 painter.drawPolyline(QPolygonF(points2)); } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); TemperatureHumidityGraph graph; graph.show(); return app.exec(); } ``` 这段代码创建了一个`TemperatureHumidityGraph`类,它是一个继承自`QWidget`的窗口部件,重写了`paintEvent`方法用来绘制温度湿度折线图。 在`paintEvent`方法中,我们首先创建了一个`QPainter`对象,并设置了抗锯齿属性和红色画笔。接着,我们定义了一个`QList<QPointF>`类型的变量`points`,它包括了一组温度数据的坐标点,这些坐标点用来构建温度折线图。 使用`QPainter`对象的`drawPolyline`方法可以根据坐标点绘制出一条折线图。同样的,我们定义了另一个`QList<QPointF>`类型的变量`points2`,它包括了一组湿度数据的坐标点,用来绘制湿度折线图。 最后,在`main`函数中,我们创建了一个`TemperatureHumidityGraph`对象,并将其显示出来。 当程序运行时,会显示一个简单的温度湿度折线图窗口。你可以根据需要修改坐标点的值来实现更加复杂的折线图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值