Qt - txt 파일을 읽고 테이블에 쓰기
4745 단어 Qt
:
#include "tablewidget.h"
#include
#include
#include
#include
#include
void readData() // , txt
{
std::ifstream fin;
fin.open("Imagedata.txt");
if (fin.fail())
{
std::cout << "File open error!";
int m;
std::cin >> m;
}
else{
for (int i = 0; i < 85425; i++)
{
for (int j = 0; j < 33; j++){
fin >> imageData[i][j];
}
}
fin.close();
}
}
int x=1;
int y=20; // (225,355,33) (85425,33)
int location = (x-1)*355+y; //225*355 (x,y) location
double imageData[85425][33]; //(1,1) ,(1,2) 。。。(1,355) 355 ,(2,1) 356 ,
TableWidget::TableWidget()
{
table = new QTableWidget(this);
table->setColumnCount(56);
table->setRowCount(60); // 60*56
QStringList headers;
headers <setHorizontalHeaderLabels(headers); // , ,
table->resize(1366,200);
readData();
for (int column = 0; column < 33; ++column)
{
QTableWidgetItem *item0;
item0 = new QTableWidgetItem;
double m=imageData[location][column];
QString txt = QString("%1").arg(m); // string
item0->setText(txt);
table->setItem( 0 , column , item0); // txt
}
}
다음은 다음과 같습니다.
첫째:readData() 함수, 파일 읽기
4
void readData()
{
std::ifstream fin;
fin.open("Imagedata.txt");
if (fin.fail())
{
std::cout << "File open error!";
int m;
std::cin >> m;
}
else{
for (int i = 0; i < 85425; i++)
{
for (int j = 0; j < 33; j++){
fin >> imageData[i][j];
}
}
fin.close();
}
}
우선, 헤드 파일과 입력 출력을 포함해야 하며, 파일의 읽기와 쓰기를 책임져야 한다. 주로 다음과 같은 세 가지 함수가 있다.4
#include
ofstream //
ifstream // ,
fstream // ,
이 분야에 대한 소개가 많고 구체적으로도 참고 링크http://blog.csdn.net/kingstar158/article/details/6859379 두 번째: 56*60 테이블을 만듭니다.
TableWidget::TableWidget()
{
table = new QTableWidget(this);
table->setColumnCount(56);
table->setRowCount(60);
QStringList headers;
headers < <setHorizontalHeaderLabels(headers); // , ,
}
QTableWidget , , 。
QTableWidget *table = new QTableWidget(60,56); // 60 56
추가 줄을 실현하려면 이 글을 참고하십시오. 여기에 링크를 첨부하십시오http://blog.csdn.net/xgbing/article/details/7774737
문제는 표가 너무 작아서 자기 소프트웨어 시스템이 또 무슨 미친 짓을 했는지 몰라서 리즈 함수를 호출해서 표의 크기를 조절했다.table->resize(1366,200);
여기 1366은 어디서 얻은 건가요?나는 창의 해상도를 보고 함수를 호출한 것을 알았다QDesktopWidget *d = QApplication::desktop();
int w = d->width(); //
int h = d->height(); //
나도 탭->resize(w,h)를 직접 양보해 본 적이 있다.그러나 이런 방법은 나로 하여금 스크롤 바를 잃게 할 뿐만 아니라, 비례가 보기 좋은 원인에 끼어 있어서, 나는 그것의 폭만 취했다.
셋째: 수조를 표에 쓴다for (int column = 0; column < 33; ++column)
{
QTableWidgetItem *item0;
item0 = new QTableWidgetItem;
double m=imageData[location][column];
QString txt = QString("%1").arg(m); // string
item0->setText(txt);
table->setItem( 0 , column , item0); // txt
}
table->setItem(0, 0, new QTableWidgetItem(QString("1")));
Qstring은 문자열만 입력할 수 있기 때문에 십진수를string형으로 변환해야 합니다. 아래 문장을 통해 이 문제를 해결했습니다.
4QString txt = QString("%1").arg(m);
그 중에서%1은 첫 번째 숫자로 대체하고%2는 두 번째 숫자로 대체한다. 쉽게 말하면 문자열 변수 매개 변수로 문자열의 최소 수치를 순서대로 대체한다. 예를 들어 다음과 같다.QString status = QString("Processing file %1 of %2: %3") .arg(i).arg(total).arg(fileName);
"Processing file i of totalt: fileName"
다시 보기arg의 정의: QString::arg (int a, int field Width = 0, int base = 10, const QChar & fillChar = QLatin1 Char (') const, 여기field Width는 문자의 폭을 표시하고base는 진수를 표시합니다
관련 지식은 주로 이 편을 참고한다http://qimo601.iteye.com/blog/1420750
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Qt로 문자와 이미지의 혼합 텍스트 그리기텍스트를 그리려면 QPainter::drawText 함수를 사용하지만 텍스트와 동시에 이미지 (아이콘 등)를 함께 그리기를 원합니다. QLabel와 QPushButton는 이미지와 텍스트를 표시하는 기능을 가지고 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.