int number; int randomValue = qrand() % number;
возвращает случайное число
randomValue
с 0 < =randomValue
<number
.
qrand()
объявлен в QtGlobal , который # включен во многие другие файлы Qt.int value; QString aString = QString::number(value);
преобразует целое число в QString.
Вот элегантный способ сделать это, который я скопировал откуда-то, и мне только жаль, что я не мог вспомнить где, чтобы я мог отдать им должное. 8 -)
Я назначаю id
каждой из моих страниц (или всем страницам в разделе) следующим образом:
In index.html: <body id='section-intro'>...
In faq.html: <body id='section-faq'>...
In download.html: <body id='section-download'>...
И затем id
для соответствующих ссылок :
<li id='nav-intro'><a href="./">Introduction</a></li>
<li id='nav-faq'><a href="./faq.html">FAQ</a></li>
<li id='nav-download'><a href="./download.html">Download</a></li>
И в CSS я установил такое правило:
#section-intro #nav-intro,
#section-faq #nav-faq,
#section-download #nav-download {
font-weight: bold;
/* And whatever other styles the current link should have. */
}
Таким образом, это работает в основном декларативным способом, чтобы управлять стилем ссылки, которой принадлежит текущая страница. Вы можете увидеть это в действии здесь: http://entrian.com/source-search/
После настройки это очень чистая и простая система, потому что:
переключателя
или операторы if / else / else
Я не использую Django, но эта система работает где угодно. В вашем случае, когда вы «устанавливаете собственные соответствующие заголовки и содержимое», вам также необходимо установить идентификатор тела
, и никакой другой разметки Django не требуется.
Эта идея легко распространяется и на другие ситуации. , например. «Мне нужна ссылка для скачивания на боковой панели на каждой странице, кроме самих страниц для скачивания». Вы можете сделать это в CSS следующим образом:
#section-download #sidebar #download-link {
display: none;
}
вместо того, чтобы помещать условную разметку шаблона в HTML-код боковой панели.
Я вижу только пару способов сделать это, избегая повторения ifequals:
Javascript. Что-то вроде (jQuery):
var parts = window.location.pathname.split ('/');
var page = parts [parts.length-1];
$ ('# sidebar1 a [href * =' + page + ']'). addClass ('текущий');
Измените свои представления, чтобы они содержали список страниц со связанными с ними заголовками и URL-адресами, и создайте цикл {% for%} в своем шаблоне, который будет проходить через этот список и добавлять один {% ifequal%}.
Вариант 2 - мой любимый вариант. Если логика для всех ваших страниц одинакова и различаются только шаблоны, вы можете рассмотреть возможность использования модели FlatPages для каждой из ваших страниц. Если логика отличается и вам нужны разные модели, вы можете рассмотреть возможность использования какого-либо приложения для меню. Бесстыдный плагин: у меня есть собственное приложение для меню
Не использовал Django, но я имел дело с той же проблемой в Kohana (PHP) и Rails.
Что я делаю в Kohana:
<li><a href="/admin/dashboard" <?= (get_class($this) == 'Dashboard_Controller') ? "class=\"active\"" : NULL ?>>Dashboard</a></li>
<li><a href="/admin/campaigns" <?= (get_class($this) == 'Campaigns_Controller') ? "class=\"active\"" : NULL ?>>Campaigns</a></li>
<li><a href="/admin/lists" <?= (get_class($this) == 'Lists_Controller') ? "class=\"active\"" : NULL ?>>Lists</a></li>
] Что я делаю в Rails:
<li><a href="/main" <%= 'class="active"' if (controller.controller_name == 'main') %>>Overview</a></li>
<li><a href="/notifications" <%= 'class="active"' if (controller.controller_name == 'notifications') %>>Notifications</a></li>
<li><a href="/reports" <%= 'class="active"' if (controller.controller_name == 'reports') %>>Reports</a></li>