nếu là do bạn không biết thì không gọi là lỗi được, bạn cứ viết hàm đọc dữ liệu từ file, xong gán dữ liệu đó cho thuộc tính của mấy cái widget là xong mà
tui không xài qt, định cài thử viết demo dùm bạn mà ba thứ đồ quỷ này tốn tời gian quá, xài tạm 1 trình tương tự là borland c++ builder 6
1/dữ liệu của tui đơn giản thôi, cái cb6 này là hàng cũ rồi nên chưa hỗ trợ unicode
2/form của tui có 5 control (trong qt gọi là widget)
một label để chứa nội dung câu hỏi
3 radiobutton để chứa câu trả lời
1 nút click để kiểm tra và đi tới câu kế
3/tại form create (là lúc form mới tạo), tui gọi hàm đọc dữ liệu từ file, sau đó gán nội dung câu hỏi cho caption của label, gán nội dung đáp án 1, 2, 3 cho caption của các radiobutton1, 2, 3
Mã:
int cauHienTai = 0;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
DocFile();
Label1->Caption = cauHoi[cauHienTai].cauHoi;
RadioButton1->Caption = cauHoi[cauHienTai].traloi[0];
RadioButton2->Caption = cauHoi[cauHienTai].traloi[1];
RadioButton3->Caption = cauHoi[cauHienTai].traloi[2];
}
tại button click, tui gọi hàm kiểm tra đúng sai, tiếp theo kiểm tra coi có phải câu cuối chưa, nếu là câu cuối thì hiện thông báo số câu đúng, nếu chưa thì tiếp tục load dữ liệu câu kế cho các control
Mã:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(KiemTraDung())
soCauDung++;
cauHienTai++;
if(cauHienTai >= MAXCAUHOI)
{
if(Application->MessageBoxA("ban da tra doi dung" + soCauDung, "Finish", MB_YESNO) == MB_NO)
PostQuitMessage(0);
else
{
soCauDung = 0;
cauHienTai = 0;
}
}
Label1->Caption = cauHoi[cauHienTai].cauHoi;
RadioButton1->Caption = cauHoi[cauHienTai].traloi[0];
RadioButton2->Caption = cauHoi[cauHienTai].traloi[1];
RadioButton3->Caption = cauHoi[cauHienTai].traloi[2];
}
chạy thử
viết cái demo đơn giản thôi, còn các chức năng cụ thể bạn tự cài đặt nha