Просмотр сообщений
|
Страниц: 1 ... 119 120 [121] 122
|
1806
|
Qt / Пользовательский интерфейс (GUI) / Re: Программная разработка доски Судоку
|
: Май 30, 2012, 18:05
|
Учитывая советы которые мне дали сделал следующее: const short N = 9;
QTableView *tableView = new QTableView();
QTableWidget *table = new QTableWidget; table->setRowCount(N); table->setColumnCount(N);
tableView->setModel(table->model());
tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); tableView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); tableView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); tableView->verticalHeader()->hide(); tableView->horizontalHeader()->hide();
for(int i = 0; i < N; i++) for(int j = 0; j < N; j++) { tableView->setRowHeight(i, 40); tableView->setColumnWidth(j, 40); }
QWidget *window = new QWidget(); QVBoxLayout *mainVLayout = new QVBoxLayout(); mainVLayout->addWidget(tableView); window->setLayout(mainVLayout); window->show();
только вот компоновщик не оправдал моих ожиданий: думал что размер таблицы, теперь зависит от размера виджета, и при этом ячейки будут тоже менять размер.
|
|
|
1810
|
Qt / Пользовательский интерфейс (GUI) / Re: Программная разработка доски Судоку
|
: Май 30, 2012, 17:16
|
Alatey, спасибо что напомнили о том что есть возможность переопределить событие изменения размера виджета) Знаете, Bepec я с QTableView и с самими таблицами в qt очеень мало работал: только для отображения таблицы после отправления запроса в sql и все! И если бы вы показали код в котором QTableView помог бы в решении моей проблемы было бы очень хорошо Да и на наглядном примере лучше понимается
|
|
|
1811
|
Qt / Пользовательский интерфейс (GUI) / [РЕШЕНО] Программная разработка доски Судоку
|
: Май 30, 2012, 15:47
|
Здравствуйте, форумчане! Мне как любителю игры судоку, захотелось написать ее) только в разработке форм приложений я знаю самые основы: компоновщики, сплитеры, различные виджеты и т.д. А вот контролировать поведение отдельного виджета, помещенного скажем в компоновку я и не представляю. Написал небольшой пример, создающий поле судоку, в качестве ячеки взял push button: const short N = 9; QGridLayout *gridBoard = new QGridLayout(); QPushButton *cell[N][N];
for(int i = 0; i < N; i++) for(int j = 0; j < N; j++) { cell[i][j] = new QPushButton(); cell[i][j]->resize(40, 40); gridBoard->addWidget(cell[i][j], i, j); }
QWidget *sudokuBoard = new QWidget(); sudokuBoard->setLayout(gridBoard);
Все работает, только вот кнопки получаются не квадратными, можно было конечно зафиксировать их размер, но и это не годится - хотелось бы чтобы они могли пропорционально увеличиваться/уменьшать, если размер окна менялся. Кроме этого расстояние между кнопками слишком большое, и хотелось бы чтобы как в судоку это поле можно было разделить на 9 квадратов, в каждом по 9 ячеек, и чтобы было небольшое расстояние между этими квадратами. Теперь перейду к сути написания темы: Подскажите/покажите как лучше и удобнее решить эту задачу: (Какие виджеты лучше использовать для создания поля, какие в качестве ячеек и т.д. и т.п.) и убедительная просьба: не надо писать чтобы воспользовался поиском на сайте - уже делал
|
|
|
1813
|
Программирование / С/C++ / [РЕШЕНО] Негативная конверктация регистра символа
|
: Май 08, 2012, 20:39
|
Здравствуйте! =) Решил написать конвертор регистра символов. Идея проста: окно, на нем два виджета TextEdit(окно ввода (1) и окно вывода (2)) и три кнопки QPushButton Первая кнопка переводит текст в верхний регистр: был: "машина - CAR", стал: "МАШИНА - CAR", Вторая кнопка переводит текст в нижний регистр А третья переводит негативно - в зависимости от регистра символа: был: "Hello World!", стал: "hELLO wORLD!" для первой и второй кнопки не нужно было придумывать алгоритм - Qt уже об этом позаботился для третьей я придумал такой код: QString makeConvertNegative(QString InputString) { QString temp = InputString; for(int i = 0; i < temp.size(); i++) { if(temp.at(i).isLower()) { temp.replace(temp.at(i), temp.at(i).toUpper(), Qt::CaseSensitive); }else { temp.replace(temp.at(i), temp.at(i).toLower(), Qt::CaseSensitive); } } return temp; }
Этот алгоритм работает просто: проверяем регистр каждого символа строки и вставляем на его место символ с противоположным регистром Но! Этот алгоритм не все регистры символов переводит негативно, точнее если вводить по одному символу и конверктировать, то работает. Помогите понять в чем ошибка, и "ткнуть пальцем" на нее
|
|
|
|
|