QDate,QDateTime和时间戳的转换(携带其他开发随笔)

QDateTime 转 时间戳

QDateTime time = QDateTime::currentDateTime();   //获取当前时间
int timeT = time.toTime_t();   //将当前时间转为时间戳

以上知识代码获取来自:博主:草莓蛋糕人 的:时间戳和QDateTime相互转换 。

QDate 转 时间戳

QDate 直接 转成 时间戳的方法并没有找到,我的处理:

QDate date;
QString cutOffDate = QString::number(QDateTime::fromString(date.toString("yyyy-MM-dd hh:mm:ss"), "yyyy-MM-dd hh:mm:ss").toTime_t());

时间戳 转 QDate

 

时间戳 转 QDateTime

 

在QDate 或则 QDateTime数据上加上N天获得新的时间

QT 帮助文档找到的方法如下QDate::addDays:

QDate QDate::addDays(qint64 ndays) const
Returns a QDate object containing a date ndays later than the date of this object (or earlier if ndays is negative).
Returns a null date if the current date is invalid or the new date is out of range.

 

 

获得QSqlQuery最后执行的sql语句

qDebug()<

 

Dialog窗口自定义按钮属性

主要代码:

done(QDialog::Accepted);//确定按钮这么设置
done(QDialog::Rejected);//取消按钮这么设置

//视觉效果为:点了按钮之后都会关闭本dialog窗体
//个人理解内部逻辑:accepted为确定了这个窗体的操作,rejected取消了这个窗体的操作

清空QTableWidget数据

void QTableWidget::clearContents()

只设置如上代码的话,只会清空内容,但是 表格的格子 还在;我查阅了帮助文档 All Classes | Qt 5.9 后得到的意思是 上述的代码在清空数据后 发现 :

The table dimensions stay the same.

我觉得说的是“尺寸不会变”,最后有浏览了一下该类的其他方法,做出如下代码操作:

tableW->setRowCount(0);

既然尺寸不变,那我就让你的总行为变成0,诶!然后就得到想要的结果了。

 

QTableWidget双击信号

这个信号在以前用过,本来在这里也准备用的,但在学会了下面的鼠标右键信号之后 为了功能的集中 就没有用了。这里copy自己之前的代码和整理描述,方便自己以后的查阅。

首先呢 用到的Signals为:

void doubleClicked(const QModelIndex &index)

再次阅读了帮助文档呢 了解到 这个Signals来自于:

signals inherited from QAbstractItemView

然后上我自己的代码:

connect(ui->tblShowInfo, &QTableWidget::doubleClicked, this, &ShowArea::onDoubleSelect);

如上呢,链接好这里的表格tblShowInfo的信号和我们自己写的槽函数onDoubleSelect。之后就是在我们的槽函数中完成自己想要完成的操作就好了

 

QTableWidget鼠标右键信号

首先QTableWidget的鼠标右键发出的Signals是:

void customContextMenuRequested(const QPoint &pos)

首先,我知道了,这个Signals是从QWiget 继承(inherit)下来的

是哪个信号知道了就改写相关的槽函数了,不查不知道,比想象中负责也并不是那么的负责(其实就是自己没搞清楚更深层次的代码知识),直接上我自己项目中的代码:

//头文件中代码:
private:
    QMenu *rigthMenuRequest;
    QAction *updateAct;
    QAction *deleteAct;
public Q_SLOTS:
    void onCustomContextMenuRequested(QPoint pos);

///类文件中代码:
//构造函数中:
rigthMenuRequest = new QMenu(ui->tblShowInfo);
updateAct = new QAction("修改",this);
deleteAct = new QAction("删除",this);

connect(ui->tblShowInfo, &QTableWidget::customContextMenuRequested, this, &ShowContract::onCustomContextMenuRequested);
//槽函数
void ShowContract::onCustomContextMenuRequested(QPoint pos)
{
    qDebug()<<"右键 成功!";
    rigthMenuRequest->addAction(updateAct);
    rigthMenuRequest->addAction(deleteAct);
    rigthMenuRequest->exec(QCursor::pos());
}

当然如果你想上面这样的话,你测试的时候会像我这般 发现无论你怎么在这个table上右键没有任何反应;

当我测试到这里我就知道,我在学习前辈的文档时又是囫囵吞枣了,返回去仔细查看后发现了关键点如下:

    /*
     * setContextMenuPolicy方法用来设置widget菜单项的显示方法,而CustomContextMenu是唯一与右键菜单
     * 有关的参数,因此这里我们将菜单显示方法设置为该类型。如果widget设置为CustomContextMenu时,
     * 当在数据上点击右键时就会发送customContextMenuRequested(const QPoint &pos)信号,
     * 该信号还会捕捉到点击右键的位置,并用pos参数来存储。
     */
    ui->tblShowInfo->setContextMenuPolicy(Qt::CustomContextMenu);

以上就是个人本次开发 用到的右键功能的主要代码了,后续我按照自己的要求 处理了两个action对象的 triggered信号时间处理,在这就不表了。

该知识点:QTableWidget鼠标右键信号 主要的知识参考来自前辈:@hebbely  的文章:Qt QTableWidget的用法  中的其中知识。

*特在此感谢 @hebbely 前辈的文章对我的帮助和指点。

你可能感兴趣的:(开发笔记,QT)