QTableView显示tooltip与设置日志
原文http://www.cppblog.com/biao/archive/2009/08/07/92577.html
狂奔的蜗牛很给力
1. 设置QTableView启用鼠标跟踪:
ui->tableView->setMouseTracking(true);
2. 与QTableView的entered信号连接:
connect(ui->tableView, SIGNAL(entered(QModelIndex)),
this, SLOT(showToolTip(QModelIndex)));
3. 糟函数:
void Widget::showToolTip(const QModelIndex &index) {
if (!index.isValid()) {
qDebug() << "Invalid index";
return;
}
QToolTip::showText(QCursor::pos(), index.data().toString() + "\ngoto hell");
}
QCursor::pos(): 返回鼠标的位置.
4. 使用QTableView自己带的函数,函数原型如下:
ui.tableWidget->resizeColumnToContents (0);
将第一列根据内容自动调整列宽。
根据内容自动调整某列的列宽
void QTableView::resizeColumnToContents ( int column ) [slot]
Resizes the given column based on the size hints of the delegate used to render each item in the column.
根据内容自动调整所有列的列宽
void QTableView::resizeColumnsToContents () [slot]
Resizes all columns based on the size hints of the delegate used to render each item in the columns.
根据内容自动调整某一行的行高
void QTableView::resizeRowToContents ( int row ) [slot]
Resizes the given row based on the size hints of the delegate used to render each item in the row.
根据内容自动调整所有行的行高。
void QTableView::resizeRowsToContents () [slot]
Resizes all rows based on the size hints of the delegate used to render each item in the rows.
设置日志:我用了下,感觉没有打时间啊,而且比较粗糙。。。回头有时间自己加点代码完善下
#include <QtDebug>#include <QFile>#include <QTextStream>void customMessageHandler(QtMsgType type, const char *msg){ QString txt; switch (type) { //调试信息提示 case QtDebugMsg: txt = QString("Debug: %1").arg(msg); break; //一般的warning提示 case QtWarningMsg: txt = QString("Warning: %1").arg(msg); break; //严重错误提示 case QtCriticalMsg: txt = QString("Critical: %1").arg(msg); break; //致命错误提示 case QtFatalMsg: txt = QString("Fatal: %1").arg(msg); abort(); } QFile outFile("debuglog.txt"); outFile.open(QIODevice::WriteOnly | QIODevice::Append); QTextStream ts(&outFile); ts << txt << endl;}int main( int argc, char * argv[] ){ QApplication app( argc, argv ); //先注册自己的MsgHandler qInstallMsgHandler(customMessageHandler); //以后就可以像下面这样直接打日志到文件中,而且日志也会包含时间信息 qDebug("This is a debug message at thisisqt.com"); qWarning("This is a warning message at thisisqt.com"); qCritical("This is a critical message at thisisqt.com"); qFatal("This is a fatal message at thisisqt.com"); return app.exec();}