Đó là hai bước, phân tích cú pháp tệp và sau đó đẩy tệp đó vào tiện ích con.
Tôi đã chụp những dòng này từ QFile documentation.
QFile file("in.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
while (!file.atEnd()) {
QByteArray line = file.readLine();
process_line(line);
}
chức năng process_line của bạn sẽ trông như thế này:
static int row = 0;
QStringList ss = line.split('\t');
if(ui->tableWidget->rowCount() < row + 1)
ui->tableWidget->setRowCount(row + 1);
if(ui->tableWidget->columnCount() < ss.size())
ui->tableWidget->setColumnCount(ss.size());
for(int column = 0; column < ss.size(); column++)
{
QTableWidgetItem *newItem = new QTableWidgetItem(ss.at(column));
ui->tableWidget->setItem(row, column, newItem);
}
row++;
Để biết thêm thông tin về QTableWidgets thao tác, kiểm tra documentation. Đối với người dùng mới bằng cách sử dụng trình tạo GUI trong Qt Creator, đầu tiên bạn sẽ thấy khó khăn khi tìm ra nó.
Cuối cùng tôi khuyên bạn nên chuyển sang xây dựng GUI theo cách họ thực hiện trong tất cả examples ... bằng cách thêm mọi thứ bằng tay trong mã thay vì kéo và thả.
Câu hỏi này là khá mơ hồ, bạn đang sử dụng MVC hoặc widget 'truyền thống'? Tiện ích bảng là 2D, vậy văn bản sẽ được sắp xếp như thế nào trong bảng? – cmannett85
Trong Trình tạo Qt, có một điều khiển GUI được gọi là Bảng Widget, đó là những gì tôi đang sử dụng. Tôi nghĩ câu hỏi rất đơn giản. Tôi muốn điền một bảng trong GUI của tôi với một tệp văn bản được phân cách bằng tab làm nguồn dữ liệu. Nếu sử dụng một Widget Bảng, không phải là cách tiếp cận tốt nhất sau đó tôi mở cho các đề xuất khác. Như tôi đã đề cập, tôi mới làm quen với Qt. –
Vâng 'QTableWidget' là tùy chọn tốt nhất nếu bạn chỉ muốn hiển thị văn bản, trong lưới 2D, mà không chia sẻ dữ liệu với bất kỳ tiện ích con nào khác. Ngoài ra, bạn sẽ nhận được phản hồi tốt hơn nếu bạn chỉ hỏi một câu hỏi trong bài đăng của mình: tải tệp văn bản, phân tích cú pháp vào các chuỗi riêng biệt và sau đó đẩy chúng vào một tiện ích bảng; là ba quy trình rất khác nhau và tôi sẽ ngạc nhiên nếu mỗi người trong số họ không được giải thích trên trang web này hoặc tài liệu. – cmannett85