Russian Qt Forum
Сентябрь 30, 2024, 16:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перетасовка объектов на форме  (Прочитано 2819 раз)
jonyroww
Гость
« : Май 28, 2014, 18:44 »

Здравствуйте!

Пишу систему тестирования в Qt. Нужно, чтобы чекбоксы при запуске меняли положение. Как это сделать?
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)

{
    setupUi(this);
    checkBox->hide();
    checkBox_2->hide();
    checkBox_3->hide();
    plainTextEdit->hide();
    label->hide();
    label_2->hide();
    pushButton_2->hide();

    ans = "";
    cnt = 0;
    f.open("in.txt");

    right = 0;

}
void MainWindow::on_pushButton_clicked()
{
    pushButton->hide();
    checkBox->show();
    checkBox_2->show();
    checkBox_3->show();
    plainTextEdit->show();


    std::getline(f, ans);
    plainTextEdit->setPlainText(QString::fromLocal8Bit(ans.c_str()));
    std::getline(f, ans);
    checkBox->setText(QString::fromLocal8Bit(ans.c_str()));
    std::getline(f, ans);
    checkBox_2->setText(QString::fromLocal8Bit(ans.c_str()));
    std::getline(f, ans);
    checkBox_3->setText(QString::fromLocal8Bit(ans.c_str()));

    std::getline(f, ans);

}

void MainWindow::on_checkBox_clicked()
{
    cnt ++;

    if(cnt > 9)
    {
        label_2->setText(QString::number(right));
        label->show();
        label_2->show();
        pushButton_2->show();

        checkBox->hide();
        checkBox_2->hide();
        checkBox_3->hide();
        plainTextEdit->hide();




        return;
    }

    if(QString::fromLocal8Bit(ans.c_str()) == checkBox->text())
        right ++;


    std::getline(f, ans);
    plainTextEdit->setPlainText(QString::fromLocal8Bit(ans.c_str()));
    std::getline(f, ans);
    checkBox->setText(QString::fromLocal8Bit(ans.c_str()));
    std::getline(f, ans);
    checkBox_2->setText(QString::fromLocal8Bit(ans.c_str()));
    std::getline(f, ans);
    checkBox_3->setText(QString::fromLocal8Bit(ans.c_str()));

    std::getline(f, ans);


    checkBox->setChecked(false);
}
void MainWindow::on_checkBox_2_clicked()
{
    cnt ++;

    if(cnt > 9)
    {
        label_2->setText(QString::number(right));
        label->show();
        label_2->show();
        pushButton_2->show();

        checkBox->hide();
        checkBox_2->hide();
        checkBox_3->hide();
        plainTextEdit->hide();
        return;
    }

    if(QString::fromLocal8Bit(ans.c_str()) == checkBox_2->text())
        right ++;


    std::getline(f, ans);
    plainTextEdit->setPlainText(QString::fromLocal8Bit(ans.c_str()));
    std::getline(f, ans);
    checkBox->setText(QString::fromLocal8Bit(ans.c_str()));
    std::getline(f, ans);
    checkBox_2->setText(QString::fromLocal8Bit(ans.c_str()));
    std::getline(f, ans);
    checkBox_3->setText(QString::fromLocal8Bit(ans.c_str()));

    std::getline(f, ans);


    checkBox_2->setChecked(false);

}
void MainWindow::on_checkBox_3_clicked()
{
    cnt ++;

    if(cnt > 9)
    {
        label_2->setText(QString::number(right));
        label->show();
        label_2->show();
        pushButton_2->show();

        checkBox->hide();
        checkBox_2->hide();
        checkBox_3->hide();
        plainTextEdit->hide();
        return;
    }

    if(QString::fromLocal8Bit(ans.c_str()) == checkBox_3->text())
        right ++;


    std::getline(f, ans);
    plainTextEdit->setPlainText(QString::fromLocal8Bit(ans.c_str()));
    std::getline(f, ans);
    checkBox->setText(QString::fromLocal8Bit(ans.c_str()));
    std::getline(f, ans);
    checkBox_2->setText(QString::fromLocal8Bit(ans.c_str()));
    std::getline(f, ans);
    checkBox_3->setText(QString::fromLocal8Bit(ans.c_str()));

    std::getline(f, ans);


    checkBox_3->setChecked(false);




}

void MainWindow::on_pushButton_2_clicked()
{
 close();
}
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #1 : Май 28, 2014, 21:40 »

какое положение? через setChecked() что ли?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
jonyroww
Гость
« Ответ #2 : Май 28, 2014, 22:16 »

какое положение? через setChecked() что ли?
Положение на форме. В чекбоксы выводятся варианты ответов из текстового файла, то есть они должны каждый раз перемешиваться.
« Последнее редактирование: Май 28, 2014, 22:19 от jonyroww » Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #3 : Май 28, 2014, 23:46 »

Читай из файла значения, но не сразу их выводи в чекбоксы, а в std::list например, затем значения этого контейнера перемешай с помощью того же std::shuffle или своей реализацией алгоритма, и уже из перемешенного списка задавай описания чекбоксам. Вроде довольно прямолинейный алгоритм Улыбающийся
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
jonyroww
Гость
« Ответ #4 : Май 29, 2014, 08:09 »

Читай из файла значения, но не сразу их выводи в чекбоксы, а в std::list например, затем значения этого контейнера перемешай с помощью того же std::shuffle или своей реализацией алгоритма, и уже из перемешенного списка задавай описания чекбоксам. Вроде довольно прямолинейный алгоритм Улыбающийся

Если не трудно, можете привести пример из моего кода?))
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #5 : Май 29, 2014, 10:39 »

Читай из файла значения, но не сразу их выводи в чекбоксы, а в std::list например, затем значения этого контейнера перемешай с помощью того же std::shuffle или своей реализацией алгоритма, и уже из перемешенного списка задавай описания чекбоксам. Вроде довольно прямолинейный алгоритм Улыбающийся

Если не трудно, можете привести пример из моего кода?))
Код ваш ужасен, архитектура очень плохая. Куча повторяющегося кода, жёстко забитое кол-во как вариантов ответа, так и кол-во вопросов. Легче полностью переделать, чем в вашем коде что-то править )
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.075 секунд. Запросов: 23.