Russian Qt Forum
Ноябрь 26, 2024, 06:52
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Перетасовка объектов на форме
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Перетасовка объектов на форме (Прочитано 2839 раз)
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
Сообщений: 4747
Re: Перетасовка объектов на форме
«
Ответ #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
Гость
Re: Перетасовка объектов на форме
«
Ответ #2 :
Май 28, 2014, 22:16 »
Цитата: kambala от Май 28, 2014, 21:40
какое положение? через setChecked() что ли?
Положение на форме. В чекбоксы выводятся варианты ответов из текстового файла, то есть они должны каждый раз перемешиваться.
«
Последнее редактирование: Май 28, 2014, 22:19 от jonyroww
»
Записан
Kurles
Бывалый
Offline
Сообщений: 480
Re: Перетасовка объектов на форме
«
Ответ #3 :
Май 28, 2014, 23:46 »
Читай из файла значения, но не сразу их выводи в чекбоксы, а в std::list например, затем значения этого контейнера перемешай с помощью того же std::shuffle или своей реализацией алгоритма, и уже из перемешенного списка задавай описания чекбоксам. Вроде довольно прямолинейный алгоритм
Записан
Код
C++ (Qt)
while
(
!
asleep
(
)
)
sheep
++;
jonyroww
Гость
Re: Перетасовка объектов на форме
«
Ответ #4 :
Май 29, 2014, 08:09 »
Цитата: Kurles от Май 28, 2014, 23:46
Читай из файла значения, но не сразу их выводи в чекбоксы, а в std::list например, затем значения этого контейнера перемешай с помощью того же std::shuffle или своей реализацией алгоритма, и уже из перемешенного списка задавай описания чекбоксам. Вроде довольно прямолинейный алгоритм
Если не трудно, можете привести пример из моего кода?))
Записан
Kurles
Бывалый
Offline
Сообщений: 480
Re: Перетасовка объектов на форме
«
Ответ #5 :
Май 29, 2014, 10:39 »
Цитата: jonyroww от Май 29, 2014, 08:09
Цитата: Kurles от Май 28, 2014, 23:46
Читай из файла значения, но не сразу их выводи в чекбоксы, а в std::list например, затем значения этого контейнера перемешай с помощью того же std::shuffle или своей реализацией алгоритма, и уже из перемешенного списка задавай описания чекбоксам. Вроде довольно прямолинейный алгоритм
Если не трудно, можете привести пример из моего кода?))
Код ваш ужасен, архитектура очень плохая. Куча повторяющегося кода, жёстко забитое кол-во как вариантов ответа, так и кол-во вопросов. Легче полностью переделать, чем в вашем коде что-то править )
Записан
Код
C++ (Qt)
while
(
!
asleep
(
)
)
sheep
++;
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...